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

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

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

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

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

前言

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

Twitter 上的 HTML 是這樣的:

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

Facebook HTML 是這樣的::

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

最后看看 GitHub 的首頁(yè):

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

等等……

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

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

ACSS 的概念

ACSS 是 Atomic CSS 的簡(jiǎn)寫,它是 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,并且會(huì)以視覺效果進(jìn)行命名。

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

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

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

ACSS 和 CSS-in-JS 為什么會(huì)火

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

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

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

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

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

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

我來總結(jié)下:

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

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

在沒有組件化的傳統(tǒng)網(wǎng)頁(yè)開發(fā)時(shí)代,如果你通過 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 要修改某些樣式,你可去哭娘去吧,這哪有直接給個(gè) .btn 類名方便,要修改直接改類名就行了,例如下面:

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

但是在組件化時(shí)代就不一樣了,例如使用 React 封裝一個(gè) 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"> 注冊(cè) </Button>

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

ACSS 優(yōu)劣

使用 ACSS 的好處:

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

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

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

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

使用 ACSS 劣處:

  • 毫無(wú)疑問,ACSS 會(huì)增加HTML 的體積,但是借助 Gzip 這個(gè)就不是大問題。

  • 熟悉命名 ACSS 命名會(huì)有一定成本。

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

如何選擇 ACSS 庫(kù)

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

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

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

ACSS 庫(kù)大致就分為這三類了。

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

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

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

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

我們來看看我們最終會(huì)選擇哪個(gè) ACSS 庫(kù),首先原子 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 的概念,通過對(duì)比 CSS-in-JS 來剖析 ACSS 借助前端組件化浪潮開始起飛的過程,最后如何在項(xiàng)目中選擇自己的 ACSS 庫(kù),我們通過一些硬性標(biāo)準(zhǔn),分析了三類 ACSS 庫(kù),幫你選擇了 Windi CSS

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
最新中文字幕在线播放| 人人爽香蕉精品| 日韩高清在线一区| 亚洲视频二区| 亚洲色图国产| 日韩精品三区四区| 国产日韩视频| 久久字幕精品一区| 国产精品精品| 99久久精品费精品国产| 97精品中文字幕| 国产高清不卡| 今天的高清视频免费播放成人| 午夜国产精品视频免费体验区| 欧美特黄一区| 亚洲一二av| 国产精品一区二区中文字幕| 精品免费av一区二区三区| 中文字幕在线看片| 亚洲国产一区二区在线观看| 免费在线观看视频一区| 天堂俺去俺来也www久久婷婷| 欧美亚洲网站| 精品免费视频| 欧美亚洲激情| 玖玖精品视频| 国产欧美日本| 蜜桃成人精品| 久久国产精品美女| 日韩高清中文字幕一区二区| 黑丝一区二区三区| 国产欧美精品久久| 亚洲一区二区毛片| 国产成人精选| 日韩国产在线观看| 欧美亚洲日本精品| 麻豆视频一区| 国产精品videossex久久发布| 88xx成人免费观看视频库| 久久九九精品| 好看不卡的中文字幕| 亚洲精品欧美| 色婷婷综合网| 欧美中文日韩| 国产日韩中文在线中文字幕| 在线一区视频观看| 天海翼亚洲一区二区三区| 美女视频网站久久| 欧美激情五月| 亚洲激情偷拍| 国产福利亚洲| 欧美日韩视频一区二区三区| 欧美日韩1区| 日本午夜精品视频在线观看| 精品五月天堂| 欧美国产日韩电影| 欧美午夜精彩| 国产精品一国产精品| 99视频精品全国免费| 日韩高清三区| а√在线中文在线新版| 亚洲影院天堂中文av色| 狠狠躁少妇一区二区三区| 免费日韩视频| 精品国产免费人成网站| 亚洲人妖在线| 国产自产自拍视频在线观看| 日韩视频一二区| 国产91精品对白在线播放| 日本91福利区| 久久中文字幕二区| 美女视频黄免费的久久| 亚洲日韩视频| 亚洲第一区色| 国产精久久久| 中文字幕亚洲影视| 欧美1级日本1级| 精品少妇一区| 国产日韩欧美中文在线| 另类国产ts人妖高潮视频| 91嫩草亚洲精品| 欧美日韩亚洲一区| 久久福利精品| 日韩国产一区二区三区| 国产欧美日韩在线一区二区 | 婷婷激情久久| 免费观看在线综合色| 亚洲毛片网站| 国产精品a久久久久| 日韩视频不卡| 先锋影音久久久| 婷婷综合六月| 国语对白精品一区二区| 日韩精品久久久久久| 精品一区免费| 久久三级中文| 91精品国产经典在线观看| 国内精品福利| 久久久蜜桃一区二区人| 日韩av片子| 国产欧美激情| 日韩高清一区在线 | 亚洲小说春色综合另类电影| 婷婷中文字幕一区| 最新中文字幕在线播放| 国产精品videossex久久发布| 欧美成人综合| 自拍自偷一区二区三区| 亚洲成人精品| 极品av在线| 日本激情一区| 欧美激情综合| 久久精品一区| 久久影视三级福利片| 日韩av字幕| 日本一区二区中文字幕| 日本vs亚洲vs韩国一区三区二区| 国产精品一区二区三区美女 | 日韩一区二区三区免费播放| 久久97视频| 中文字幕在线官网| 国产综合色区在线观看| 私拍精品福利视频在线一区| 免费在线小视频| 久久久国产亚洲精品| 欧美aa国产视频| 99国产精品私拍| 亚洲天堂免费| 日韩中出av| 国产精选久久| 国产精品久久久久久久久久10秀| 激情黄产视频在线免费观看| 日韩高清成人| 国产字幕视频一区二区| 欧美.日韩.国产.一区.二区| 宅男在线一区| 六月丁香综合| 日韩精品一级二级| 日韩精品一页| 国产精品久久久久久久久久白浆 | 国产精品欧美三级在线观看| 国产精区一区二区| 福利一区二区| 天堂网av成人| 国产一区导航| 日韩欧乱色一区二区三区在线| 人人爱人人干婷婷丁香亚洲| 美女尤物国产一区| 91日韩欧美| 一区免费视频| 日韩高清一级| 成人午夜网址| 亚洲韩日在线| 中文字幕视频精品一区二区三区| 亚洲精品第一| 国产伦精品一区二区三区视频 | 日韩三级精品| 国产精品香蕉| а√天堂中文在线资源8| 香蕉国产精品| 午夜天堂精品久久久久| 欧美国产中文高清| 正在播放日韩精品| 99国产精品视频免费观看一公开| 日韩国产在线一| 国产资源在线观看入口av| 国产一区白浆| 麻豆久久一区| 欧美亚洲激情| 亚洲国产不卡| 久久精品国产999大香线蕉 | 精品99久久| 一区免费视频| 国产精品久久久久久久久久久久久久久| 成人国产精品一区二区网站| 免费高潮视频95在线观看网站| 蜜臀国产一区二区三区在线播放| 久久超级碰碰| 午夜国产欧美理论在线播放| 国产精品天天看天天狠| 91精品国产福利在线观看麻豆| 亚洲不卡视频| 九九精品调教| 欧美精品三级在线| japanese国产精品| 你懂的网址国产 欧美| 91九色精品| 欧美国产日韩电影| 国产精品美女久久久浪潮软件| 国产精品成人自拍| 不卡一区综合视频| 美女性感视频久久| 亚洲小说春色综合另类电影| 福利欧美精品在线| 视频一区二区三区中文字幕| 成人亚洲一区二区| 日本成人在线一区| av亚洲免费| 最近高清中文在线字幕在线观看1| 日韩av在线免费观看不卡|