Heim  >  Artikel  >  Web-Frontend  >  Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

阿神
阿神Original
2017-03-16 09:35:162928Durchsuche

WeUI ist ein von WeChat Web Service entwickeltes UI-Kit. Es enthält derzeit 12 Module (Button, Cell, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Progress, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Welches Wissen kann über die WeUI von WeChat erlernt werden?, Tab, Welches Wissen kann über die WeUI von WeChat erlernt werden?).

Demoseite: https://weui.io

Github-Seite: https://github.com/weui/weui

Lassen Sie uns über die CSS-Fähigkeiten sprechen, die ich von WeUI gelernt habe.

1.Button

Von da an bemerkte ich, dass bei der Implementierung von WeUI viele Grenzen mit :before, :after gezogen werden Dies geschieht, um sicherzustellen, dass 1 Pixel wirklich 1 Pixel auf dem Retina-Bildschirm ist >

Als ich das sah, stellte ich fest, dass WeUI viel Flex-Layout verwendet. Ich war schon einmal verwirrt darüber, wie man einen Rahmen mit einigen Lücken auf der linken Seite zwischen Listenelementen implementiert. Die Border-Eigenschaft unterstützt nicht die Anzeige nur eines Teils einer Seite. Muss ich
?
.weui_btn:after {
    content: " ";
    width: 200%;
    height: 200%;
    position: absolute;
    top: 0;
    left: 0;
    border: 1px solid rgba(0, 0, 0, 0.2);
    -webkit-transform: scale(0.5);
    transform: scale(0.5);
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    box-sizing: border-box;
    border-radius: 10px;
}
Die Implementierung von WeUI ist: Verwendung von .weui_cells:before.

left: 15px (Leerstelle links) und Overflow: Hidden (Überschuss rechts ausblenden) von .weui_cells_title kann den Rand mit offenen Stellen anzeigen Die Implementierung des rechten Pfeils am Ende des Listenelements stellte sich als um 45 Grad gedrehter Rand heraus, um weui_cell_ft::after. Ich dachte, ich würde iconfont verwenden.

2.3.Radio (Einzelauswahl-Listenelement)

.weui_cell {
    padding: 10px 15px;
    position: relative;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
}

In jede Zeile ist ein verstecktes

eingebettet Die Versteckmethode ist:

Welches Wissen kann über die WeUI von WeChat erlernt werden? Ein span.input.weui_check und .weui_icon_checked werden hinter jedem input.weui_check platziert, um ein Häkchen anzuzeigen. Sie sind Brüder

2.4.Checkbox (Checklistenelement)
.weui_cell:before {
    content: " ";
    position: absolute;
    left: 15px;
    top: 0;
    width: 100%;
    height: 1px;
    border-top: 1px solid #D9D9D9;
    color: #D9D9D9;
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: scaleY(0.5);
    transform: scaleY(0.5);
}

.weui_cells_access .weui_cell_ft:after {
    content: " ";
    display: inline-block;
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    height: 6px;
    width: 6px;
    border-width: 2px 2px 0 0;
    border-color: #C8C8CD;
    border-style: solid;
    position: relative;
    top: -2px;
    top: -1px;
    margin-left: .3em;
}
Das Kontrollkästchen ist wie das Optionsfeld oben ausgeblendet.

Überraschender ist für mich, dass sowohl der ausgewählte als auch der nicht ausgewählte Effekt mithilfe von Iconfont erzielt werden und der ausgewählte Effekt einen Check-Iconfont mit horizontaler und vertikaler Zentrierung verwendet

2.5.Schalter (Schalter)单选Welches Wissen kann über die WeUI von WeChat erlernt werden?

<input type="radio" class="weui_check" name="radio1">

Früher dachte ich, dass dieser Effekt schwer zu erreichen sei, aber nachdem ich Weuis Implementierung gesehen hatte, brauchte es nur noch CSS! Darunter stellt .weui_switch einen Rahmen bereit, die Hintergrundfarbe ist #DFDFDF (dunkelgrau), wenn sie nicht ausgewählt ist, und #04BE02 (grün), wenn sie ausgewählt ist .weui_switch:before stellt das hellgraue #FDFDFD innerhalb des Rahmens bereit. Wenn ausgewählt, wird Scale(0) verkleinert und verschwindet.
.weui_check {
    position: absolute;
    left: -9999em;
}

.weui_switch:after stellt eine kreisförmige Schaltfläche bereit. Wenn ausgewählt, verschieben Sie sie um 20 Pixel nach rechts.

<span class="weui_icon_checked"></span>
Die Wirkung ist wie folgt:
.weui_cells_radio .weui_check:checked + .weui_icon_checked:before {
    display: block;
    content: &#39;\EA08&#39;;
    color: #09BB07;
    font-size: 16px;}

2.6.Form (Form)

复选Welches Wissen kann über die WeUI von WeChat erlernt werden?

Das Eingabemuster="[0-9]* beschränkt die Eingabe nur auf die Zahlen 0-9 (der Wert des Musters ist ein regulärer Ausdruck).
<input type="checkbox" class="weui_check" name="checkbox1">

Input[type="number"] zeigt in Chrome standardmäßig die Pfeile nach oben und unten an. Dieser Code ist im Dev Tool von Chrome nicht sichtbar und kann nur über CSS angezeigt werden. Es hat lange gedauert, bis ich danach gesucht habe.

/* 选中效果 */.weui_cells_checkbox .weui_check:checked + .weui_icon_checked:before {
    content: &#39;\EA06&#39;;
    color: #09BB07;}/* 未选中效果 */.weui_cells_checkbox .weui_icon_checked:before {
    content: &#39;\EA01&#39;;
    color: #C9C9C9;
    font-size: 23px;
    display: block;}

Durch Klicken auf input[type="number"] wird automatisch die numerische Tastatur unter iOS geöffnet.

2.7.Upload (Hochladen)

Welches Wissen kann über die WeUI von WeChat erlernt werden?

<input class="weui_switch" type="checkbox">

WeUI verwendet die folgende einfache Methode, um die graue Ebene vor dem Bild zu implementieren: oben:0; unten:0; .
.weui_switch {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  position: relative;
  width: 52px;
  height: 32px;
  border: 1px solid #DFDFDF;
  outline: 0;
  border-radius: 16px;
  box-sizing: border-box;
  background: #DFDFDF;}.weui_switch:checked {
  border-color: #04BE02;
  background-color: #04BE02;}.weui_switch:before {
  content: " ";
  position: absolute;
  top: 0;
  left: 0;
  width: 50px;
  height: 30px;
  border-radius: 15px;
  border-top-left-radius: 15px;
  border-top-right-radius: 15px;
  border-bottom-right-radius: 15px;
  border-bottom-left-radius: 15px;
  background-color: #FDFDFD;
  -webkit-transition: -webkit-transform .3s;
  transition: -webkit-transform .3s;
  transition: transform .3s;
  transition: transform .3s, -webkit-transform .3s;}.weui_switch:checked:before {
  -webkit-transform: scale(0);
  transform: scale(0);}.weui_switch:after {
  content: " ";
  position: absolute;
  top: 0;
  left: 0;
  width: 30px;
  height: 30px;
  border-radius: 15px;
  background-color: #FFFFFF;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
  -webkit-transition: -webkit-transform .3s;
  transition: -webkit-transform .3s;
  transition: transform .3s;
  transition: transform .3s, -webkit-transform .3s;}.weui_switch:checked:after {
  -webkit-transform: translateX(20px);
  transform: translateX(20px);}

Der Bild-Upload-Status verwendet eine klassische (horizontale + vertikale) Zentrierungsmethode mit top: 50 % (Positionierung des oberen Rands des Elements auf 50 % des übergeordneten Elements) und transform: translatorY(-50 %) (wodurch das Element verschoben wird). nach oben Verschieben Sie 50 % der Höhe des Elements selbst).

Die vertikale Zentrierung, die ich normalerweise verwende, ist wie folgt:

Der letzte Upload-Button:

input[type="file"] löst automatisch das Menü aus, um unter iOS „Foto“ oder „Foto“ auszuwählen.

Das Feld wird mit .weui_uploader_input_wrp gezeichnet, und das Pluszeichen wird mit .weui_uploader_input_wrp:before and:after gezeichnet.Welches Wissen kann über die WeUI von WeChat erlernt werden?

    真正的input利用opacity:0隐藏起来了.

.weui_uploader_input_wrp:before {
    width: 2px;
    height: 39.5px;
}
.weui_uploader_input_wrp:after {
    width: 39.5px;
    height: 2px;
}
.weui_uploader_input_wrp:before,
.weui_uploader_input_wrp:after {
    content: " ";
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background-color: #D9D9D9;
}
.weui_uploader_input {
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);

2.8.Form Error (Welches Wissen kann über die WeUI von WeChat erlernt werden?报错)

Welches Wissen kann über die WeUI von WeChat erlernt werden?报错

<input class="weui_input" type="date" value="">
<input class="weui_input" type="datetime-local" value="" placeholder="">

    在iOS上, 点选input[type="date"]会出现"年-月-日"的Welches Wissen kann über die WeUI von WeChat erlernt werden?框, 点选input[type="datetime-local"]会出现"月-日-上午/下午-时-分"的Welches Wissen kann über die WeUI von WeChat erlernt werden?框.

2.9.Select (Welches Wissen kann über die WeUI von WeChat erlernt werden?)

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    电话号码+86位置的右箭头和分割线是用:before和:after绘制的.

3.Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

<p id="toast"   style="max-width:90%">
    <p class="weui_mask_transparent"></p>
    <p class="weui_toast">
        <i class="weui_icon_toast"></i>
        <p class="weui_toast_content">已完成</p>
    </p>
</p>

    .weui_mask_transparent就是一个position:fixed占满全屏的透明幕布, 让用户无法操作界面.

    .weui_toast才是页面中间的黑块.

Welches Wissen kann über die WeUI von WeChat erlernt werden? Loading

    竟然是纯用HTML+CSS(animation+transition)实现的.

<p id="loadingWelches Wissen kann über die WeUI von WeChat erlernt werden?" class="weui_loading_toast" style="/* display: none; */">
    <p class="weui_mask_transparent"></p>
    <p class="weui_toast">
        <p class="weui_loading">
            <p class="weui_loading_leaf weui_loading_leaf_0"></p>
            <p class="weui_loading_leaf weui_loading_leaf_1"></p>
            <p class="weui_loading_leaf weui_loading_leaf_2"></p>
            <p class="weui_loading_leaf weui_loading_leaf_3"></p>
            <p class="weui_loading_leaf weui_loading_leaf_4"></p>
            <p class="weui_loading_leaf weui_loading_leaf_5"></p>
            <p class="weui_loading_leaf weui_loading_leaf_6"></p>
            <p class="weui_loading_leaf weui_loading_leaf_7"></p>
            <p class="weui_loading_leaf weui_loading_leaf_8"></p>
            <p class="weui_loading_leaf weui_loading_leaf_9"></p>
            <p class="weui_loading_leaf weui_loading_leaf_10"></p>
            <p class="weui_loading_leaf weui_loading_leaf_11"></p>
        </p>
        <p class="weui_toast_content">数据加载中</p>
    </p></p>
.weui_loading_leaf {
  position: absolute;
  top: -1px;
  opacity: 0.25;}.weui_loading_leaf:before {
  content: " ";
  position: absolute;
  width: 8.14px;
  height: 3.08px;
  background: #d1d1d5;
  box-shadow: rgba(0, 0, 0, 0.0980392) 0px 0px 1px;
  border-radius: 1px;
  -webkit-transform-origin: left 50% 0px;
          transform-origin: left 50% 0px;}.weui_loading_leaf_0 {
  -webkit-animation: opacity-60-25-0-12 1.25s linear infinite;
          animation: opacity-60-25-0-12 1.25s linear infinite;}.weui_loading_leaf_0:before {
  -webkit-transform: rotate(0deg) translate(7.92px, 0px);
          transform: rotate(0deg) translate(7.92px, 0px);}/* ... */.weui_loading_leaf_11 {
  -webkit-animation: opacity-60-25-11-12 1.25s linear infinite;
          animation: opacity-60-25-11-12 1.25s linear infinite;}.weui_loading_leaf_11:before {
  -webkit-transform: rotate(330deg) translate(7.92px, 0px);
          transform: rotate(330deg) translate(7.92px, 0px);}@-webkit-keyframes opacity-60-25-0-12 {
  0% {
    opacity: 0.25;
  }
  0.01% {
    opacity: 0.25;
  }
  0.02% {
    opacity: 1;
  }
  60.01% {
    opacity: 0.25;
  }
  100% {
    opacity: 0.25;
  }}/* ... */@-webkit-keyframes opacity-60-25-11-12 {
  0% {
    opacity: 0.895958333333333;
  }
  91.6767% {
    opacity: 0.25;
  }
  91.6867% {
    opacity: 1;
  }
  51.6767% {
    opacity: 0.25;
  }
  100% {
    opacity: 0.895958333333333;
  }}

4. Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

<p class="weui_dialog_confirm" id="dialog1">
    <p class="weui_mask"></p>
    <p class="weui_dialog">
        <p class="weui_dialog_hd"><strong class="weui_dialog_title">弹窗标题</strong></p>
        <p class="weui_dialog_bd">自定义弹窗内容,居左对齐显示,告知需要确认的信息等</p>
        <p class="weui_dialog_ft">
            <a href="javascript:;" class="weui_btn_dialog default">取消</a>
            <a href="javascript:;" class="weui_btn_dialog primary">确定</a>
        </p>
    </p></p>

    你能看到的边框都是用:after实现的.

5. Progress

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    略. ( *・ω・)✄╰ひ╯

6. Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    略. ( *・ω・)✄╰ひ╯

7. Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    略. ( *・ω・)✄╰ひ╯

8. Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

<p id="actionSheet_wrap">
    <p class="weui_mask_transition" id="mask" style="display: none;"></p>
    <p class="weui_actionsheet" id="weui_actionsheet">
        <p class="weui_actionsheet_menu">
            <p class="weui_actionsheet_cell">示例菜单</p>
            <p class="weui_actionsheet_cell">示例菜单</p>
            <p class="weui_actionsheet_cell">示例菜单</p>
            <p class="weui_actionsheet_cell">示例菜单</p>
        </p>
        <p class="weui_actionsheet_action">
            <p class="weui_actionsheet_cell" id="actionsheet_cancel">取消</p>
        </p>
    </p>
</p>

    值得一提的是, 页面下方的Welches Wissen kann über die WeUI von WeChat erlernt werden?始终是显示的, 只不过平时通过transform: translateY(100%)隐藏了起来, 显示时用translateY(0). 这方法无需JS就可以自适应任意高度的Welches Wissen kann über die WeUI von WeChat erlernt werden?.

.weui_actionsheet {
    position: fixed;
    left: 0;
    bottom: 0;
    -webkit-transform: translate(0, 100%);
    transform: translate(0, 100%);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    z-index: 2;
    width: 100%;
    background-color: #EFEFF4;
    -webkit-transition: -webkit-transform .3s;
    transition: -webkit-transform .3s;
    transition: transform .3s;
    transition: transform .3s, -webkit-transform .3s;
}
.weui_actionsheet_toggle {
    -webkit-transform: translate(0, 0);
    transform: translate(0, 0);
}

9. Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    一堆iconfont. ( *・ω・)✄╰ひ╯

10. Welches Wissen kann über die WeUI von WeChat erlernt werden?

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    略. ( *・ω・)✄╰ひ╯

11. Tab

    Navbar:

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    Welches Wissen kann über die WeUI von WeChat erlernt werden?:

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    略. ( *・ω・)✄╰ひ╯

12. Welches Wissen kann über die WeUI von WeChat erlernt werden?

    无焦点状态:

Welches Wissen kann über die WeUI von WeChat erlernt werden?

    有焦点状态:

Welches Wissen kann über die WeUI von WeChat erlernt werden? with Candidates

<p class="weui_search_bar weui_search_focusing" id="search_bar">
    <form class="weui_search_outer">
        <!-- 搜索框有焦点时的搜索图标, 搜索框和清空按钮 -->
        <p class="weui_search_inner">
            <i class="weui_icon_search"></i>
            <input type="search" class="weui_search_input" id="search_input" placeholder="搜索" required="">
            <a href="javascript:" class="weui_icon_clear" id="search_clear"></a>
        </p>
        <!-- 搜索框没有焦点时的显示 -->
        <label for="search_input" class="weui_search_text" id="search_text">
            <i class="weui_icon_search"></i>
            <span>搜索</span>
        </label>
    </form>
    <!-- 搜索框有焦点时的取消键 -->
    <a href="javascript:" class="weui_search_cancel" id="search_cancel">取消</a>
</p>

    这里我最好奇的是, 当用户点击搜索框时, 弹出的键盘上右下角的按键是"搜索"而不是"换行".

    我测试的效果是, 在微信中点击搜索框时键盘显示"搜索"按键, 在Safari中打开时则显示"换行".

    这就很诡异了, 说明微信做了什么手脚. 难道与JS有关?

    但是我在网上搜索了下, 发现只要确保input[type="search"]被form包围, 且form有action属性即可. 示例:

<form action="">
  <input type="search" name="search" placeholder="search">
</form>

    但是WeUI的实现中,form并没有action属性, 所以暂时不知道WeUI是如何做的.

相关文章:

通过微信WEUI实现图片上传,后台PHP该如何处理?

Angularjs整合微信UI(weui)

Popup-Layer-Kapselung für allgemeine JS-Informationsaufforderungen für WEUI-Anwendungen

Das obige ist der detaillierte Inhalt vonWelches Wissen kann über die WeUI von WeChat erlernt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn