久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

深入解析一下CSS架構(gòu)之ACSS

本篇文章給大家?guī)砹岁P(guān)于css架構(gòu)ACSS的相關(guān)知識,其中詳細(xì)介紹了ACSS的概念、優(yōu)勢以及怎樣選擇ACSS庫,希望對大家有幫助。

深入解析一下CSS架構(gòu)之ACSS

前言

我們知道現(xiàn)在前端開發(fā)模式,組件化是比較火的,那么 CSS 開發(fā)模式比較火的是什么呢,沒錯就是我們今天的主角 ACSS,我們先觀察下各大型網(wǎng)站的應(yīng)用:

Twitter 上的 HTML 是這樣的:

深入解析一下CSS架構(gòu)之ACSS

Facebook HTML 是這樣的::

深入解析一下CSS架構(gòu)之ACSS

最后看看 GitHub 的首頁:

深入解析一下CSS架構(gòu)之ACSS

等等……

看到 Twitter、Facebook 的類名你可能會嚇一跳,但是那也是 ACSS 的一種,相對來講 GitHub ACSS 更加符合你的直觀,無論如何,這么多大公司都用到了 ACSS,說明它確實(shí)有效,你應(yīng)該也要在項(xiàng)目多多嘗試嘗試。

接下來我們進(jìn)入 ACSS 的學(xué)習(xí)。

ACSS 的概念

ACSS 是 Atomic CSS 的簡寫,它是 Thierry Koblenz 在 2013 年 10 月的文章 Challenging CSS Best Practices 中創(chuàng)造的。

首先,讓我們?yōu)?原子化 CSS (Atomic CSS) 給出適當(dāng)?shù)亩x:

John Polacek 在文章 Let’s Define Exactly What Atomic CSS is 中寫道:

Atomic CSS is the approach to CSS architecture that favors small, single-purpose classes with names based on visual function.

譯文:原子化 CSS 是一種 CSS 的架構(gòu)方式,它傾向于小巧且用途單一的 class,并且會以視覺效果進(jìn)行命名。

除了叫 ACSS,你還可以稱它為函數(shù)式 CSS,或者 CSS 實(shí)用工具。

CSS 是一個不強(qiáng)調(diào)邏輯,而更側(cè)重表現(xiàn)的一門所見即所得的語言,當(dāng)樣式寫多了,你就會發(fā)現(xiàn)常用樣式的來來去去也就那幾個,無非就是調(diào)整一下他們的排列組合。每次寫這些重復(fù)的樣式代碼我就感覺自己是在重復(fù)造輪子,自然而然就產(chǎn)生了想要縮寫的需求,而 ACSS 做的一些事情很平常,無非就是把 CSS 屬性寫成一個獨(dú)立的類名。

.m-0 {   margin: 0; } .text-red {   color: red; } /* ... */

ACSS 和 CSS-in-JS 為什么會火

前面我們明白了 ACSS 的概念,所以接下來我要講下 CSS-in-JS 的概念,然后才好解釋為什么它們會火。

CSS-in-JS 是很重要的概念,本來打算寫篇文章介紹的,題目都取好了 「CSS 架構(gòu)之 CSS-in-JS」,整理資料發(fā)現(xiàn)阮一峰老師寫過了,那我就直接拿過來吧 阮一峰——CSS in JS 簡介,但是阮老師并沒有給出流行 CSS 的解決方案,現(xiàn)在都 21 年了,我們知道目前流行著好幾種解決方案,方案各有利弊,我們需要一篇文章來通透的理解它們,于是 @FateRiddle 同學(xué)的 React拾遺:從10種現(xiàn)在流行的 CSS 解決方案談?wù)勎业淖類?(上) 這篇文章出現(xiàn)了。

你可以先不看上面的文章鏈接,我來給你梳理下:

很久以前,前端項(xiàng)目比較小,HTML、CSS、JS 都耦合在一起,后來隨著項(xiàng)目越來越大,為了便于維護(hù),代碼不允許在耦合,要求各個技術(shù)只負(fù)責(zé)自己的領(lǐng)域。

在后來,伴隨著 React 出現(xiàn),前端組織代碼的方式變了,組件成為組織代碼主流方法,而組件的核心原則就是代碼完全不依賴外部,表現(xiàn)在 React 中就是 HTML、CSS、JS 強(qiáng)強(qiáng)耦合,這樣就避免了影響其他組件,對于 CSS 我們也寫在了 JS 中,這就要 CSS in JS,其實(shí)就是寫行內(nèi)樣式。

但行內(nèi)樣式不支持偽類、媒體查詢,于是出現(xiàn)了 React-JSS 這種庫,對行內(nèi)樣式進(jìn)行擴(kuò)展;有人又不能忍受 React-JSS 這種樣式駝峰的寫法;出現(xiàn)了 styled-components,遵循 CSS 寫法規(guī)范的庫;有人比較喜歡不耦合的寫法,于是 Css Module 出現(xiàn)了;還有人覺得 Vue 的解決辦法比較優(yōu)雅,然后就出現(xiàn)了 styled-jsx。

我來總結(jié)下:

CSS-in-JS 本質(zhì)就是行內(nèi)樣式,之所以會火就是因?yàn)榻M件化時代的到來。

看明白 CSS in JS 火的原理,你肯定猜到 ACSS 會火的原因——那就是組件化時代的到來,你甚至可以理解為 ACSS 就是 CSS 架構(gòu)下得 CSS 組件化。

在沒有組件化的傳統(tǒng)網(wǎng)頁開發(fā)時代,如果你通過 ACSS 來確定樣式,例如下面代碼的形式,合作的小伙伴肯定以為你瘋了:

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">按鈕</button>

因?yàn)?button 的復(fù)用率很高,你項(xiàng)目到處充斥著這種 button,一旦 button 要修改某些樣式,你可去哭娘去吧,這哪有直接給個 .btn 類名方便,要修改直接改類名就行了,例如下面:

<button class="btn">按鈕</button>

但是在組件化時代就不一樣了,例如使用 React 封裝一個 Button:

const Button = ({ children, color }) => (     <button class=`bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded ${color}`>{children}</button> )

使用如下:

<Button color="pink"> 注冊 </Button>

如果樣式有修改,我只要插拔 ACSS 就行了,而且對比使用 .btn 實(shí)現(xiàn),樣式的重用性會極大提高,理解也很容易。

ACSS 優(yōu)劣

使用 ACSS 的好處:

  • 你的 CSS 停止增長。使用傳統(tǒng)方法,每次添加新功能時,您的 CSS 文件都會變大。使用實(shí)用程序,一切都是可重用的,因此您很少需要編寫新的 CSS,一套樣式全局通用。

  • 你不是在浪費(fèi)精力發(fā)明類名。不再添加愚蠢的類名,例如 sidebar-inner-wrapper 只是為了能夠設(shè)置樣式,也不再為真正只是一個 flex 容器的東西的完美抽象名稱而苦惱。

  • 靈活,易讀。CSS 是全球性的,當(dāng)你做出改變時,你永遠(yuǎn)不知道你破壞了什么。HTML 中的類是本地的,因此您可以 插拔式改變樣式 而不必?fù)?dān)心其他問題,CSS 樣式很多縮寫更加符合大腦的記憶。

  • 永遠(yuǎn)不用擔(dān)心命名沖突,永遠(yuǎn)不用擔(dān)心樣式覆蓋。

使用 ACSS 劣處:

  • 毫無疑問,ACSS 會增加HTML 的體積,但是借助 Gzip 這個就不是大問題。

  • 熟悉命名 ACSS 命名會有一定成本。

ACSS 劣處是非常小的,而好處有非常大,沒有理由在項(xiàng)目中不適用,強(qiáng)烈建議你每個前端項(xiàng)目都是用 ACSS。

如何選擇 ACSS 庫

市面上有不少成熟的 CSS 框架,如 Tailwind CSS,Windi CSS 以及 Tachyons 等。

同時有些 UI 庫也會附帶一些 CSS 工具類作為框架的補(bǔ)充,如 Bootstrap 和 Chakra UI。

甚至還有一些人根據(jù)項(xiàng)目總結(jié)出來自己的 ACSS,例如 atom.css、SACSS: Static Atomic CSS 等。

ACSS 庫大致就分為這三類了。

把它們整合到我們的項(xiàng)目,那我們選擇的標(biāo)準(zhǔn)是什么呢?

按需生成,比如我們使用 class="m-1" 來設(shè)置 margin,那么 m-x,x 到底是多大呢,x 但不管 x 是多大,當(dāng)增加 x 的時候,margin 不同方向,比如 mt 代表 margin-top,mb 代表 margin-bottom 等,也得增加,如果加上 :hover 和 :focus 這樣的偽類時,體積還會得更變大,原子類太多了,應(yīng)該提供按需生成只加載我們用過的。

動態(tài)化,原子類不應(yīng)該是完全靜態(tài)化的,比如我要使用 class="m-100" ,我應(yīng)該可以是直接使用,而不是設(shè)置完之后,發(fā)現(xiàn)樣式?jīng)]生效,然后通過框架的配置文件,去增加對 m-100 的支持,原子類要把可插拔做到極致。

除了上面兩個是非常重要的標(biāo)準(zhǔn),我認(rèn)為 自動值推導(dǎo) 和 屬性化模式 也是提升了開發(fā)體驗(yàn)要考慮的部分。

我們來看看我們最終會選擇哪個 ACSS 庫,首先原子 CSS 一定要純凈,所以 UI 框架附帶的 ACSS 就不能采用了,根據(jù)項(xiàng)目總結(jié)的 ACSS,它的原子 CSS 太過靜態(tài),不能隨想隨用,不符合原子類不應(yīng)該是完全靜態(tài)化的標(biāo)準(zhǔn),Tailwind CSS 本來是沒有按需生成的,后來增加了,但是 Windi CSS 速度更快還兼容 Tailwind CSS,所以我們很自然就必須必的選擇了 Windi CSS 。

總結(jié)

我們先通過舉例子,了解了 ACSS 的使用,然后介紹了 ACSS 的概念,通過對比 CSS-in-JS 來剖析 ACSS 借助前端組件化浪潮開始起飛的過程,最后如何在項(xiàng)目中選擇自己的 ACSS 庫,我們通過一些硬性標(biāo)準(zhǔn),分析了三類 ACSS 庫,幫你選擇了 Windi CSS

(學(xué)習(xí)視頻分享:css視頻教程)

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
精品美女在线视频| 久久国产成人| 国产毛片精品| 日本少妇精品亚洲第一区| 少妇精品久久久一区二区三区| 美女国产一区| 亚洲视频电影在线| 日本不卡视频一二三区| 日本a级不卡| 国产乱码精品一区二区亚洲| 国产午夜精品一区在线观看| 日本在线不卡视频一二三区| 青青伊人久久| 欧美交a欧美精品喷水| 久久这里只有精品一区二区| 亚洲黄色中文字幕| 欧美三级精品| 国产成人久久| 欧美日韩视频免费观看| 婷婷久久一区| 亚洲一区二区小说| 91成人精品在线| 国产精品多人| 亚洲精品88| 中文字幕系列一区| 夜夜精品视频| 中文字幕av一区二区三区人| 91精品国产经典在线观看| 久久精品系列| 欧美精品羞羞答答| 日韩精品免费视频人成| 精品一区视频| 欧美福利专区| 在线亚洲自拍| 久久精品国产www456c0m| 久久国产99| 国产亚洲一区| 久久九九精品| 日韩精品视频中文字幕| 国产96在线亚洲| 亚洲精品a级片| 亚洲精品免费观看| 久久精品国产久精国产| 欧美在线网站| 日本午夜精品| 久久久天天操| 日韩精品亚洲专区在线观看| 91视频一区| 婷婷综合亚洲| 国产日韩欧美一区二区三区在线观看| 中文在线а√在线8| 免费在线看一区| 国产精品13p| 亚洲18在线| 日韩中文在线电影| 日本国产一区| 亚洲涩涩在线| 91嫩草精品| 婷婷成人综合| 国产精品成人自拍| 91成人精品视频| 国产精品白浆| 黑丝一区二区三区| 国内精品伊人| 免费人成精品欧美精品| 水蜜桃久久夜色精品一区| 国产亚洲福利| 国产美女高潮在线| 欧美一区不卡| 国产亚洲毛片| av资源亚洲| 欧美中文高清| 欧美中文字幕| 久久91导航| 青青国产精品| 亚洲一区黄色| av资源新版天堂在线| 欧美一级久久| 另类av一区二区| 日韩免费福利视频| 国产精品白丝一区二区三区| 丝袜美腿高跟呻吟高潮一区| 日韩影院二区| 亚洲人成亚洲精品| 精品久久视频| 日韩一区中文| 日韩黄色大片| 久久亚洲人体| 日韩不卡手机在线v区| 麻豆久久精品| 欧美天堂亚洲电影院在线观看| 欧美精品日日操| 久久久久久色 | 首页欧美精品中文字幕| 免费一二一二在线视频| 国产精品久久久久久av公交车| 亚洲日本欧美| 欧美专区18| 久久精品亚洲欧美日韩精品中文字幕| 免费在线欧美黄色| 97久久超碰| 亚洲精品四区| 亚洲一区二区三区免费在线观看| 欧美二区视频| 99久久夜色精品国产亚洲1000部| 国产一二在线播放| 欧美成人一二区| 欧美日韩亚洲一区三区| 无码日韩精品一区二区免费| 国产精品日韩| 久久亚洲影院| 美女网站久久| 国产精品视区| 99热国内精品| 久久狠狠婷婷| 一本大道色婷婷在线| 国产精品久久久久久久免费观看| 精品久久美女| 久久av日韩| 美女尤物国产一区| 免费在线亚洲欧美| 美腿丝袜亚洲一区| 精品国产精品久久一区免费式| 老鸭窝一区二区久久精品| 国产免费播放一区二区| 国产精品一区二区99| 欧美91在线| 国产一区二区三区视频在线| 久久亚洲道色| 日本精品黄色| 天堂av在线| 色婷婷狠狠五月综合天色拍| 久久九九精品| 黄色av日韩| 日韩精品一级中文字幕精品视频免费观看 | 国产三级一区| 欧美亚洲一级| 国产精品一线天粉嫩av| 日韩精品视频中文字幕| 日本午夜精品| 精品亚洲a∨一区二区三区18| 国产一区二区三区四区五区| 三级在线看中文字幕完整版| 久久免费国产| 一区久久精品| 亚洲久久视频| 久久不见久久见免费视频7| 国产精品3区| 国产v日韩v欧美v| 激情婷婷综合| 亚洲久久视频| 国产精品啊啊啊| 欧美gv在线| 欧美日韩国产一区精品一区| 天堂俺去俺来也www久久婷婷| 91国内精品| 极品av在线| 欧美专区18| 国产精品视频一区二区三区| 国产不卡人人| 另类亚洲自拍| 国产精品啊v在线| 久久久久蜜桃| 久久亚洲一区| 久久亚洲人体| 精品1区2区3区4区| 国产亚洲一区二区三区啪| 91综合视频| 蜜臀久久99精品久久一区二区 | 日韩一级精品| 91成人福利| 日韩中文在线电影| 中文一区一区三区免费在线观| 国产亚洲一卡2卡3卡4卡新区| 黄毛片在线观看| 亚洲色图综合| 成人在线黄色| 日韩专区在线视频| 老司机免费视频一区二区| 国产真实久久| 日韩毛片一区| 日韩久久精品网| 综合欧美亚洲| 波多视频一区| 视频一区日韩| 日韩高清中文字幕一区二区| 伊人久久一区| 人在线成免费视频| 天堂久久av| 欧美性感美女一区二区 | 国产精品中文字幕制服诱惑| 国产欧洲在线| 日韩欧美2区| 亚洲精品.com| 国产精品毛片视频| 精品一区在线| 美女精品视频在线| 亚洲永久精品唐人导航网址| 热三久草你在线| 国产精品一区二区av日韩在线|