初探Tailwind CSS

    寫CSS有些年頭了,經(jīng)歷了不同的時期用不同的姿勢來編寫CSS,其目的就是給Web元素添加樣式。愛掏網(wǎng) - it200.com但編寫樣式著實令人感到煩惱,甚至是效率低下,成本極高。愛掏網(wǎng) - it200.com也正因如此,社區(qū)中有很多CSS方法論和框架來幫助開發(fā)快速有效編寫CSS。愛掏網(wǎng) - it200.com雖然這些方法論和框架有助于我們快速編寫CSS,構(gòu)建UI組件,但也有令人感到頭痛之處,比如冗余的代碼,代碼的覆蓋等。愛掏網(wǎng) - it200.com隨著功能第一(Utility-First)CSS的出現(xiàn),讓我看到了編寫CSS的另一種有效的方式,該方式也被認(rèn)為是現(xiàn)代Web中構(gòu)建Web界面最好的選擇愛掏網(wǎng) - it200.com其中Utility-First CSS的典型作品之一就是Tailwind CSS愛掏網(wǎng) - it200.com接下來,我們就來了探討Tailwind CSS,我們將了解基于組件的樣式有哪些問題,以及為什么要基于Utility-First CSS來構(gòu)建組件。愛掏網(wǎng) - it200.com

    時至今日,編寫CSS有很多方式,也可以基于一些CSS框架來編寫。愛掏網(wǎng) - it200.com比如2024年CSS狀態(tài)報告中也有相關(guān)的統(tǒng)計:

    或許你在項目中已經(jīng)用了一些CSS方法論,比如BEM、Atomic CSS、OOCSS、SMACSS和ITCSS等,也體驗過了在項目中引用社區(qū)中優(yōu)秀的CSS框架,比如大家熟悉的Bootstrap、Foundation等。愛掏網(wǎng) - it200.com

    隨著一些優(yōu)秀的JavaScript框架(比如,React和Vue)等出現(xiàn),我們構(gòu)建Web的方式也變了,也致使我們編寫CSS的方式也不同了,社區(qū)中有很多關(guān)于CSS-in-JS的討論,同樣也有不同的方式方法:

    如果你面對眾多的編寫CSS的姿勢和管理維護(hù)方式感到困惑的話,建議你可以按照下圖的流程來做選擇:

    有關(guān)于這方面的討論,這里就不做過多的闡述了,如果你感興趣的話,可以閱讀:

    • 寫CSS的姿勢
    • React中編寫CSS的姿勢

    雖然這些CSS方法都在試圖著幫助我們解決CSS編寫和管理的問題,但是如果我們能夠編寫實用程序類(Utility Class),然后在我們的代碼庫中重復(fù)使用它們,就會更容易一些。愛掏網(wǎng) - it200.com這些實用工具類是詳盡的,可以作為paddingmarginfont-size等方面的獨立指南。愛掏網(wǎng) - it200.com

    另外實用程序類(Utility Class)將解決重復(fù)樣式的問題,因為我們不再需要編寫任何自定義樣式。愛掏網(wǎng) - it200.com此外,如果我們的UI風(fēng)格遵循特定的標(biāo)準(zhǔn),我們也可以在開發(fā)中遵循相同的標(biāo)準(zhǔn)。愛掏網(wǎng) - it200.com其中Tailwind CSS就是社區(qū)中目前具備這些特點的CSS框架之一。愛掏網(wǎng) - it200.com是不是對Tailwind CSS感到好奇,如果是的話,請繼續(xù)往下閱讀。愛掏網(wǎng) - it200.com

    Tailwind CSS官網(wǎng)是這么描述的:

    換句話說,Tailwind CSS是一個基于實用程序的底層CSS框架,旨在簡化Web應(yīng)用程序的構(gòu)建,提高事度,減少編寫定制CSS的關(guān)注,而不需要離開HTML代碼的舒適區(qū),同時實現(xiàn)出色的界面。愛掏網(wǎng) - it200.com

    比如官網(wǎng)首頁提供的示例,只需要使用幾個類就可以設(shè)計出不同的卡片效果(不需要總是聲明一個大的類來獨立于你的HTML和寫一堆屬性來制作一些東西):

    
        
            

    Erin Lindford

    Customer Support erinlindford@example.com (555) 765-4321

    而且只需要改變HTML中的類名,就可以達(dá)到不同的效果:

    其他CSS框架(比如我們熟悉的Bootstrap、Foundation、Bulma等)提供了各種預(yù)定義組件(比如ModalButtonAlertCard等)。愛掏網(wǎng) - it200.com但是有了Tailwind CSS,可以自己做,或者你被迫根據(jù)你的項目模型自己做。愛掏網(wǎng) - it200.com換句話說,你實際上擁有了組件,你可以在你選擇的任何組件上利用你的定制能力。愛掏網(wǎng) - it200.com這意味著不再需要與框架斗爭,也不需要試圖找出需要覆蓋哪些類才能獲得最初目標(biāo)的結(jié)果。愛掏網(wǎng) - it200.com

    Tailwind CSS不像Bootstrap

    當(dāng)你看到CSS框架一詞時,我想你馬上會想到Twitter的 Bootstrap (或類似于Bootstrap的CSS框架)。愛掏網(wǎng) - it200.com但它們之間還是存在很大的差異的,其中最大的差異就是:Bootstrap是一組可設(shè)定樣式筆主題的組件,Tailwind 是一組可配置的實用CSS類;Bootstrap幫助你預(yù)構(gòu)建組件,Tailwind為你提供了快速構(gòu)建自己組件愛掏網(wǎng) - it200.com

    用一個按鈕的示例來展示他們之間的區(qū)別。愛掏網(wǎng) - it200.com

    先來看HTML代碼:

    
    
    
    
    
    

    可以看到,在Bootstrap中,HTML要簡潔的多,所以你可能會問,既然Bootstrap更簡單,為什么不使用它呢?為了回答這個問題,我們來設(shè)想有這么一個場景:“如果你想讓按鈕在特定的頁面(或組件)上稍微小一點”?你是否想要為這種獨特的情況創(chuàng)建一個新的類,比如Bootstrap中的.btn-sm愛掏網(wǎng) - it200.com在這種情況下,在Tailwind CSS中只需要使用不同的padding類,比如py-1愛掏網(wǎng) - it200.com相比之下要比Bootstrap容易地多,而且你不需要去修改或增加任何CSS代碼,而只需要調(diào)整HTML中class的值。愛掏網(wǎng) - it200.com

    而且在Tailwind CSS中和Bootstrap(或類似于Bootstrap的其他CSS框架)最大的不同,在class中可以設(shè)置一些狀態(tài)的類,比如hover:bg-blue-600愛掏網(wǎng) - it200.com這在Bootstrap中從未有過的特性和功能。愛掏網(wǎng) - it200.com

    另外,在Tailwind CSS中也提供了創(chuàng)建類的可能性,比如在HTML文件中重復(fù)多次使用的組,以為該組件創(chuàng)建一個類,比如.btn-blue愛掏網(wǎng) - it200.com那么在Tailwind CSS中可以像下在這樣使用:

    
    
    
    
    

    有關(guān)于這方面的具體使用,后續(xù)會花更多的時間來和大家一起探討。愛掏網(wǎng) - it200.com

    接下來,我們再來看一下Bootstrap和Tailwind CSS兩個框架中CSS的差異性。愛掏網(wǎng) - it200.com同樣拿上面的按鈕Demo為例:

    我想你在上面的截圖中已經(jīng)看出他們之間的差異了:Bootstrap中類的樣式是一個集合(會有一個或多個樣式);而Tailwind CSS中的每個類對應(yīng)的僅是一個樣式愛掏網(wǎng) - it200.com

    Tailwind CSS不像 Atomic Design

    Tailwind CSS也不像 Atomic Design。愛掏網(wǎng) - it200.com了解Atomic Design的同學(xué)都知道,在Atomic Design系統(tǒng)中,可以將元素劃分為最小單元體,將其稱為元子,這些元子可以組合成最終的頁面。愛掏網(wǎng) - it200.com

    但Tailwind CSS的類特別像Atomic Design中的 Atoms。愛掏網(wǎng) - it200.com前面的示例可以獲知,在元素上運用很多個不同類就能達(dá)到想要的UI,甚至是頁面的效果。愛掏網(wǎng) - it200.com但在Tailwind CSS中這些類不被稱為是Atoms 類,而是被稱為實用性類(Utility Class)。愛掏網(wǎng) - it200.com

    Tailwind CSS不像 OOCSS

    Tailwind CSS也不像OOCSS(Objec

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評論
    更多 網(wǎng)友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 在线不卡一区二区三区日韩| 精品一区二区三区在线观看| 久久国产午夜精品一区二区三区 | 无码人妻精品一区二区三区99仓本 | 亚洲夜夜欢A∨一区二区三区| 中文无码AV一区二区三区| 日韩精品人妻一区二区中文八零 | 精品日韩一区二区三区视频| 蜜芽亚洲av无码一区二区三区| 日韩精品中文字幕视频一区| 一区二区三区四区精品视频| 中文无码精品一区二区三区| 一区二区不卡视频在线观看| 国产精品免费视频一区| 无码人妻精品一区二区蜜桃| 日韩人妻不卡一区二区三区| 亚洲国产精品无码久久一区二区| 一区二区三区波多野结衣| 色精品一区二区三区| 国产一区二区三区免费看| 在线成人综合色一区| 毛片无码一区二区三区a片视频| 2022年亚洲午夜一区二区福利| 亚洲av无码一区二区三区网站| 91国在线啪精品一区| 中文字幕人妻无码一区二区三区 | 蜜桃臀无码内射一区二区三区| 国产丝袜视频一区二区三区| 人妻少妇精品一区二区三区| 亚洲乱色熟女一区二区三区丝袜| 中文字幕一区二区三区免费视频| 变态拳头交视频一区二区| 中文字幕aⅴ人妻一区二区| 国产一区二区视频免费| 国产一区韩国女主播| 一区二区三区免费视频观看| 国产一区三区三区| 日韩人妻一区二区三区蜜桃视频| 精品福利视频一区二区三区| 国产情侣一区二区| 精品国产一区二区三区久久蜜臀 |