成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

深入解析一下CSS架構之ACSS

本篇文章給大家帶來了關于css架構ACSS的相關知識,其中詳細介紹了ACSS的概念、優勢以及怎樣選擇ACSS庫,希望對大家有幫助。

深入解析一下CSS架構之ACSS

前言

我們知道現在前端開發模式,組件化是比較火的,那么 CSS 開發模式比較火的是什么呢,沒錯就是我們今天的主角 ACSS,我們先觀察下各大型網站的應用:

Twitter 上的 HTML 是這樣的:

深入解析一下CSS架構之ACSS

Facebook HTML 是這樣的::

深入解析一下CSS架構之ACSS

最后看看 GitHub 的首頁:

深入解析一下CSS架構之ACSS

等等……

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

接下來我們進入 ACSS 的學習。

ACSS 的概念

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

首先,讓我們為 原子化 CSS (Atomic CSS) 給出適當的定義:

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 的架構方式,它傾向于小巧且用途單一的 class,并且會以視覺效果進行命名。

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

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

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

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

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

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

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

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

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

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

我來總結下:

CSS-in-JS 本質就是行內樣式,之所以會火就是因為組件化時代的到來。

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

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

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

因為 button 的復用率很高,你項目到處充斥著這種 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 實現,樣式的重用性會極大提高,理解也很容易。

ACSS 優劣

使用 ACSS 的好處:

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

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

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

  • 永遠不用擔心命名沖突,永遠不用擔心樣式覆蓋。

使用 ACSS 劣處:

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

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

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

如何選擇 ACSS 庫

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

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

甚至還有一些人根據項目總結出來自己的 ACSS,例如 atom.css、SACSS: Static Atomic CSS 等。

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

把它們整合到我們的項目,那我們選擇的標準是什么呢?

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

動態化,原子類不應該是完全靜態化的,比如我要使用 class="m-100" ,我應該可以是直接使用,而不是設置完之后,發現樣式沒生效,然后通過框架的配置文件,去增加對 m-100 的支持,原子類要把可插拔做到極致。

除了上面兩個是非常重要的標準,我認為 自動值推導 和 屬性化模式 也是提升了開發體驗要考慮的部分。

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

總結

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

(學習視頻分享:css視頻教程)

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
欧美黑人一区二区| 欧美V日韩V亚洲V最新在线观看 | 俄罗斯PONONDLX| 成人片黄网站色多多WWW | 精品人妻一区二区三区三区换着玩| 国产精品久久久久久久| 国产成人久久精品二区三区小说| 国产美女久久精品香蕉69| 黑人又大又粗又长欧美网站| 国内精品乱码卡一卡2卡三卡新区 国内精品乱码卡一卡2卡三卡 | 亚洲中文字幕无码久久综合网| 一二三四视频社区在线播放中国| 中文字幕人妻互换AV久久| 伊人久久亚洲综合| 99在线国内在线视频22| 肥水不流外人田小说| 国产九九99久久99大香伊| 激情综合婷婷色五月蜜桃| 久久综合给合久久国产免费| 欧美精产国品一二三产品| 日韩在线视频一区二区三区| 午夜男女无遮挡啪拍视频| 亚洲精品无码午夜福利中文字幕| 中国农村熟妇性视频| 办公室撕开奶罩揉吮奶漫画| 国产精品爆乳奶水无码视频| 久久精品99国产精品日本| 欧美黑人巨大最猛性XXXXX| 色欲久久久天天天综合网| 我和岳乱妇三级高清电影| 亚洲国色天香卡2卡3卡4| 中文字幕人妻无码专区APP | 激情综合色综合啪啪五月丁香搜索| 精品国产一区二区三区免费| 男生J桶进女人P又色又爽又黄| 日韩精品一区二区亚洲蜜桃| 亚洲AV综合色区无码三区30p| 在线观看免费AV网站| 动漫高H纯肉无码视频在线观看| 国语精品自产拍在线观看网站| 麻豆E奶女教师国产精品| 搡老女人野外老熟妇AAA| 岳把腿扒开让我添| 99国内精品久久久久影院| 国产精品涩涩涩视频网站| 麻豆文化传媒WWW网站入口| 熟女俱乐部五十路六十路AV| 夜夜高潮天天爽欧美| 高潮好爽视频在线观看| 看黄A大片日本真人视频直播| 熟妇大屁股一区二区三区视频| 亚洲中文字幕无码中字| 东北老熟女对白XXXⅩHD| 久久青青草原亚洲AV无码麻豆| 少妇高清精品毛片在线视频| 与亲女洗澡时伦了毛片| 国产精品视频一区二区三区不卡| 牛鞭进入女人下身的视频| 亚洲AV无码国产精品夜色午夜| JEAⅠOUSVUE成熟少归A| 精品久久8X国产免费观看| 日韩人妻不卡一区二区三区| 一区二区欧美视频| 国产熟妇一区二区三区AⅤ在线 | 久久久久久亚洲AV无码专区| 太深太粗太爽太猛了视频| 2021国产麻豆剧传媒网站| 国精品无码一区二区三区在线| 人人爽人人爽人人片AV| 一本一道人人妻人人妻| 国产美女遭强高潮网站| 日本久久久WWW成人免费毛片丨| 亚洲欭美日韩颜射在线| 国产精品无码2021在线观看| 欧洲人激情毛片无码视频| 一本久久A久久免费精品不卡| 国产老熟女精品一区熟女AV| 日本高清无卡码一区二区久久 | 俄罗斯1317大但人文艺术| 男生把小j放进女人屁股视频狂躁 男生把手放进我内裤揉摸好爽 | 成人AV无码乱码在线观看无码| 乱码精品一区二区三区| 亚洲精品白浆高清久久久久久| 国产JJIZZ女人多水喷水| 欧美午夜成人片在线观看| 一对一大尺度聊天APP安装 | 亚洲人ⅤSAⅤ国产精品| 国产精品久久久久这里只有精品| 人妻少妇精品无码专区漫画| 中文字幕AV无码一区二区蜜芽三 | 秋霞电影高清完整版| 又粗又大内射免费视频小说| 黑人荫道BBWBBB大荫道| 无码毛片视频一区二区三区| 第一次挺进苏雨萌| 强行无套内谢大学生初次| 中文字幕伊人久久| 久久久亚洲熟妇熟女中文字幕| 亚洲 欧洲 小说 自拍| 公交车舒婷1一20全文| 日本WV一本一道久久香蕉| 99RE久久精品国产| 巨大垂乳日本熟妇挤奶| 亚洲熟妇无码一区二区三区| 好了AV四色综合无码久久| 五十路熟妇亲子交尾| 国产SM鞭打折磨调教视频| 日韩一区二区三区射精| 边做饭边被躁BD小说| 破外女出血视频全过程 | 强CAO出水嗯啊高潮了H漫画| 2020无码天天喷水天天爽| 乱码一二三乱码又大又粗| 野花日本大全免费观看10中文 | 国内精品伊人久久久久妇 | 日本丰满熟妇55乱偷| WWWXXX国产| 欧美又粗又长XXXXBBBB疯| 99久久人妻无码精品系列| 免费视频玩乳吃奶不遮挡网站| 夜夜爽77777妓女免费看| 久久久久精品无码专区| 亚洲午夜理论无码电影| 久久久WWW成人免费看片| 亚洲一区二区三区毛片| 久久久久久国产精品无码超碰| 亚洲熟妇AV一区二区三区下载| 精品亚洲欧美无人区乱码| 亚洲欧美日韩国产成人| 精品亚洲国产成人蜜臀AV| 亚洲中文字幕AⅤ无码天堂| 久久亚洲中文字幕无码| 中文字幕VA一区二区三区| 男生和女生在一起差差差| EEUSS影院免费最电影| 日本XXXXXXXXX69| 粉嫩小泬流出白浆| 天堂√在线中文最新版8| 国产精品久久久久久亚洲AV | 国产亚洲日韩在线三区| 亚洲国产精品成人AV在线| 久草玖玖玖爱在线资源| 又大又粗又爽ΑA级毛片| 农民人伦一区二区三区| 锕锕锕锕锕锕锕好痛免费网址| 日韩欧洲在线高清一区| 国产激情无码一区二区APP| 亚洲AV色香蕉一区二区三区蜜桃| 精品久久久久久中文字幕| 永久939W79W99W乳液| 欧美成人精品在线观看| 吃奶摸下激烈床震视频试看| 我趁老师睡觉偷偷的脱她内裤 | 欧美爽到高潮漏水大喷视频| 吃了继兄给我开的药我做的梦| 无码人妻丰满熟妇啪啪网站| 韩国好看女性高级感美妆| 一本到高清视频在线观看丶| 嫩草研究院久久久精品| 厨房里的激战2类型| 亚洲Aⅴ无码专区在线观看q| 久久久久亚洲AV无码永不| 99无人区码一码二码三| 少妇搡BBBBⅩXX搡BBB| 好男人资源在线WWW免费| 在床上拔萝卜视频高清免费看| 啪啪啪1000免费观看| 国产精品国产三级国产AV′| 亚洲精品一线二线三线无人区| 男女车车的车车网站W98免费| 第一次爱的人视频播放完整版 | 娇妻呻吟黑人又粗又大视频| 2021精品久久久久精品免费网| 色欧美片视频在线观看| 豪妇荡乳1一5白玉兰免费下载 | 欧美VA国人精品VA| 国产成人无码一区二区三区在线 | 国产99久久久国产无需播放器| 亚洲国产成人精品青青草原| 男女无遮挡XX00动态图120| 粉嫩虎白女P虎白女在线| 亚洲VA综合VA国产产VA中| 女强人被春药精油按摩4| 国产 麻豆 日韩 欧美 久久| 亚洲女人天堂成人AV在线| 欧洲VODAFONEWIFI喷| 国产人久久人人人人爽| 中文在线っと好きだった最新版| 色8久久人人97超碰香蕉987| 精品少妇人妻AV一区二区三区| ASIAN高潮.颤抖.抽搐BL| 无遮挡粉嫩小泬久久久久久久 | 免费无码又爽又高潮视频 | 小洞饿了要吃大肠动作视频| 免费无码毛片一区二区APP| 国产精品国产三级国产A| 中国JAPANESE高潮尖叫| 我和闺蜜在公交被八个人挤倒| 免费高清播放A级毛片完整版 | 成人无码AV网站在线观看|