成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

面向未來(lái)的Web Components UI組件庫(kù)

lei___ / 1445人閱讀

摘要:是一套使用原生規(guī)范開(kāi)發(fā)的跨框架組件庫(kù)。真正意義上實(shí)現(xiàn)了樣式和功能的組件化。比如有一個(gè)點(diǎn)擊擴(kuò)散的水波紋效果,就是采用來(lái)實(shí)現(xiàn),只是輔助完成鼠標(biāo)位置的獲取詳細(xì)可查看源碼。組件使用了屬性。

xy-ui

xy-ui是一套使用原生Web Components規(guī)范開(kāi)發(fā)的跨框架UI組件庫(kù)。查看文檔

風(fēng)格參考Ant Design、Metiral Design。

github項(xiàng)目地址

文檔

該文檔基于docsify動(dòng)態(tài)創(chuàng)建,文中所有組件均為可交互實(shí)例。

現(xiàn)集成gitalk評(píng)論系統(tǒng),有相關(guān)問(wèn)題可在下方評(píng)論區(qū)留言。

特性

跨框架。無(wú)論是react、vue還是原生項(xiàng)目均可使用。

組件化。shadow dom真正意義上實(shí)現(xiàn)了樣式和功能的組件化。

類(lèi)原生。一個(gè)組件就像使用一個(gè)div標(biāo)簽一樣。

無(wú)依賴(lài)。純?cè)瑹o(wú)需任何預(yù)處理器編譯。

無(wú)障礙。支持鍵盤(pán)訪問(wèn)。

原則

在實(shí)現(xiàn)組件功能時(shí),遵循CSS為主,JavaScript為輔的思路,UI和業(yè)務(wù)邏輯分離,使得代碼結(jié)構(gòu)上更加簡(jiǎn)約。

比如xy-button有一個(gè)點(diǎn)擊擴(kuò)散的水波紋效果,就是采用CSS來(lái)實(shí)現(xiàn),JavaScript只是輔助完成鼠標(biāo)位置的獲取

.btn::after {
    content: "";
    display: block;
    position: absolute;
    width: 100%;
    height: 100%;
    left: var(--x,0); 
    top: var(--y,0);
    pointer-events: none;
    background-image: radial-gradient(circle, #fff 10%, transparent 10.01%);
    background-repeat: no-repeat;
    background-position: 50%;
    transform: translate(-50%,-50%) scale(10);
    opacity: 0;
    transition: transform .3s, opacity .8s;
}
.btn:not([disabled]):active::after {
    transform: translate(-50%,-50%) scale(0);
    opacity: .3;
    transition: 0s;
}

詳細(xì)可查看源碼。大部分組件都是類(lèi)似的設(shè)計(jì)。

兼容性

現(xiàn)代瀏覽器。

包括移動(dòng)端,不支持IE。

IE不支持原生customElements,webcomponentsjs可以實(shí)現(xiàn)對(duì)IE的兼容,不過(guò)很多CSS特性仍然無(wú)效,所以放棄
安裝

目前還沒(méi)有托管npm,可以在github上獲取最新文件。

目錄如下:

.
└── xy-ui
    ├── components //功能組件
    |   ├── xy-icon.js
    |   └── ...
    └── iconfont //圖標(biāo)庫(kù)
        └── icon.svg

componentsiconfont文件夾放入項(xiàng)目當(dāng)中。

依賴(lài)

部分組件使用需要依賴(lài)其他組件,依賴(lài)關(guān)系如下

組件 依賴(lài)項(xiàng) 描述
xy-button xy-iconxy-loading 按鈕。組件使用了iconloading屬性。
xy-icon 無(wú) 圖標(biāo)。
xy-slider xy-tips 滑動(dòng)條。組件使用了showtips屬性。
xy-select xy-button 下拉選擇器。組件內(nèi)部使用xy-button組合而成。
xy-tab xy-button 標(biāo)簽頁(yè)。組件導(dǎo)航按鈕使用了xy-button
xy-loading 無(wú) 加載。
xy-switch 無(wú) 開(kāi)關(guān)。
xy-checkbox 無(wú) 多選。
xy-radio 無(wú) 單選。
xy-tips 無(wú) 提示。
xy-message xy-icon 全局提示。提示信息圖標(biāo)使用xy-icon
xy-dialog xy-icon、xy-button、xy-loading 彈窗提示。提示信息圖標(biāo)使用xy-icon,確認(rèn)取消按鈕使用了xy-button。組件使用了loading屬性。
xy-layout 無(wú) 布局。
xy-input xy-icon、xy-buttonxy-tips 輸入框。組件使用了icon屬性,同時(shí)有xy-button交互,表單驗(yàn)證使用了xy-tips信息提示。
xy-textarea 同上 多行輸入框。同上。

無(wú)依賴(lài)組件直接引入多帶帶js即可,有依賴(lài)組件需要引入相關(guān)js。

如需多帶帶使用xy-tips組件,僅需引用xy-tips.js

// .
// └── project
//     ├── components
//     |   └── xy-tips.js
//     └── index.html
import "./components/xy-tips.js";

如需多帶帶使用xy-input組件,需引用xy-input.js、xy-button.js、xy-icon.jsxy-tips.js。

// └── project
//     ├── components
//     |   ├── xy-input.js
//     |   ├── xy-button.js
//     |   ├── xy-icon.js
//     |   └── xy-tips.js
//     └── index.html
import "./components/xy-input.js";
大部分情況下全部引用即可
引用 html引用
button
現(xiàn)代瀏覽器支持原生import語(yǔ)法,不過(guò)需要注意script的類(lèi)型type="module"
react項(xiàng)目引用
import "./components/xy-icon.js";
ReactDOM.render(button, document.body);
關(guān)于react中使用Web Components的注意細(xì)節(jié)可參考https://react.docschina.org/docs/web-components.html
vue項(xiàng)目引用

與原生類(lèi)似,暫無(wú)研究。

使用

使用一個(gè)組件有以下幾種方式:

html 標(biāo)簽

這是最常用的使用方式(推薦)。

button
document.createElement

也可以通過(guò)document.createElement創(chuàng)建元素

const btn = document.createElement("xy-button");
document.body.appenChild(btn);
new 操作符

自定義組件是通過(guò)class定義,可以通過(guò)new來(lái)實(shí)例化。

import XyButton from "./components/xy-button.js";
const btn = new XyButton();
document.body.appenChild(btn);
其他

大部分情況下,可以把組件當(dāng)成普通的html標(biāo)簽,

比如給button添加事件,有以下幾種方式

button
btn.onclick = function(){
    alert(5)
}

btn.addEventListener("click",function(){
    alert(5)
})
自定義事件只能通過(guò)addEventListener綁定

比如元素的獲取,完全符合html規(guī)則


    tab1
    tab2
    tab3
const tab3 = document.getElementById("tab3");
tab3.parentNode;//xy-tab

組件的布爾類(lèi)型的屬性也遵從原生規(guī)范(添加和移除屬性),比如

 
 
button 
button 

總之,大部分情況下把它當(dāng)成普通的html標(biāo)簽(不用關(guān)注shadow dom的結(jié)構(gòu))就好了,以前怎么做現(xiàn)在仍然怎么做,只是新增了方法而已。

更多詳細(xì)介紹請(qǐng)查看文檔,歡迎star~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/105497.html

相關(guān)文章

  • (翻譯)Mantra官方文檔

    摘要:我們通過(guò)對(duì)我們應(yīng)用程序的每個(gè)部分進(jìn)行單元測(cè)試來(lái)實(shí)現(xiàn)這一點(diǎn),同時(shí)遵循一個(gè)標(biāo)準(zhǔn)。它幫助你單元測(cè)試,動(dòng)作和集成容器。當(dāng)在組件庫(kù)中使用庫(kù)函數(shù)時(shí),它應(yīng)該是純函數(shù)。 Mantra 工作草案-版本0.2.0 簡(jiǎn)介 這是一個(gè)Mantra草案規(guī)范,一個(gè)由Kadira創(chuàng)建的Meteor的應(yīng)用程序架構(gòu)。 它幫助開(kāi)發(fā)人員構(gòu)建可維護(hù)的,面向未來(lái)的Meteor應(yīng)用程序。 版權(quán) The MIT License (M...

    denson 評(píng)論0 收藏0
  • 2018年前端開(kāi)發(fā)回顧

    摘要:在整個(gè)年,看到發(fā)布版增加了許多功能,包括新的生命周期方法新的上下文指針事件延遲函數(shù)和。它在等待渲染異步響應(yīng)時(shí)數(shù)據(jù),是延遲函數(shù)背后用來(lái)管理組件的代碼分割的。發(fā)布自第版開(kāi)始將近年后,于年發(fā)布。 前端發(fā)展發(fā)展迅速,非常的快。 本文將回顧2018年一些重要的前端新聞,事件和 JavaScript 趨勢(shì)。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! showImg(ht...

    crelaber 評(píng)論0 收藏0
  • 精讀《現(xiàn)代 js 框架存在根本原因》

    摘要:官方規(guī)范估計(jì)很難出現(xiàn)現(xiàn)代框架的設(shè)計(jì)了,因?yàn)楣俜皆O(shè)計(jì)中前端三劍客是相互分離的方案,為了解決現(xiàn)階段前端框架的問(wèn)題,必須由完全接管,這幾乎就是,或者支持語(yǔ)法的,可這與最初網(wǎng)頁(yè)設(shè)計(jì)思路是違背的。現(xiàn)代前端框架正在告訴我們新的三劍客虛擬虛擬。 1 引言 深入思考為何前端需要框架,以及 web components 是否可以代替前端框架? 原文地址,建議先閱讀原文,或者閱讀概述。 2 概述 現(xiàn)在前端...

    coordinate35 評(píng)論0 收藏0
  • 編寫(xiě)chameleon跨端組件正確姿勢(shì)(上篇)

    摘要:使用語(yǔ)法統(tǒng)一實(shí)現(xiàn)跨端組件請(qǐng)關(guān)注文章編寫(xiě)跨端組件的正確姿勢(shì)下篇依靠強(qiáng)大的多態(tài)協(xié)議,項(xiàng)目中可以輕松使用各端的第三方組件封裝自己的跨端組件庫(kù)。這種做法同時(shí)解決了組件命名沖突問(wèn)題,例如在微信小程序端引用表示調(diào)用小程序原生的組件而不是內(nèi)置的組件。 在chameleon項(xiàng)目中我們實(shí)現(xiàn)一個(gè)跨端組件一般有兩種思路:使用第三方組件封裝與基于chameleon語(yǔ)法統(tǒng)一實(shí)現(xiàn)。本篇是編寫(xiě)chameleon跨端...

    h9911 評(píng)論0 收藏0
  • 搜集React、Vue、Angular和傳統(tǒng)UI組件庫(kù)以及后臺(tái)管理平臺(tái)模板

    摘要:高顏值好用易擴(kuò)展的微信小程序庫(kù),有贊。一套高質(zhì)量的微信小程序組件庫(kù)。用和搭建的一個(gè)通用管理后臺(tái)基于實(shí)現(xiàn)的后臺(tái)管理系統(tǒng)模板一個(gè)后臺(tái)管理系統(tǒng)模板是一套組件化框架,支持定制主題,主要服務(wù)于前臺(tái)及中后臺(tái)產(chǎn)品?;诤笈_(tái)管理系統(tǒng)。 快來(lái)Star,在這里哦Awesome UIKit。 showImg(https://segmentfault.com/img/remote/14600000059942...

    zhangrxiang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<