tailwindcss 一款絕對讓你驚艷的CSS框架

前言:

tailwind可以理解為一個css庫粒氧,編寫方式很另類越除,但是如果時間長了可能會變成真香系列(也能可能變成真。外盯。摘盆。。)饱苟,注:以下闡述都是個人理解以及網(wǎng)上尋找的資料

什么是Tailwind CSS:

Tailwind CSS是一種實用工具- 基于低級別的CSS框架孩擂,旨在簡化建設有速度,較少關注Web應用程序編寫自定義的CSS,

官話:Rapidly build modern websites without ever leaving your HTML.(無需離開 HTML 即可快速構建現(xiàn)代網(wǎng)站箱熬。)

tailwindcss 是一個非常富有爭議的庫类垦,喜歡它的人和討厭它的人都非常多。

不做對比城须!直接上干貨蚤认,整!

今天給大家?guī)淼陌姹?tailwindcss 版本是:3.0.23

上才藝!!!

啟動項目,我們可以在 src/App.vue 中為 img 標簽增加一個 class="bg-red-900"

<img class="bg-red-900" alt="Vue logo " src="./assets/logo.png" />

查看項目 img 標簽背景變?yōu)榧t色酿傍,則表示成功

image

這個時候我們定位這個元素

image

這種在HTML中編寫樣式的感覺很奇妙,而這樣的一種方式就是 tailwindcss 的核心理念

tailwind 官方介紹為 無需離開HTML即可快速構建現(xiàn)代網(wǎng)站 烙懦,那么這句話怎么解讀呢?具體來說就是 : tailwind 提供了很多的 具體類名 ,每一個類名背后都代表著 一段 css 的內(nèi)容氯析。之前我們需要 template 中完成 html亏较,style 中完成 css 。那么在現(xiàn)在我們就可以把 css 變成 對應的類名 直接添加到 html 的 class 中掩缓。所以我們就不需要再去切換到 style 區(qū)域叹阔,直接在 html 區(qū)域來完成對應的樣式了

不能說知己知彼轩拨,但是至少要了解個大概,這種語法、或者類名多少有點難搞怎么辦谆棺,別擔心tailwind給用戶羅列出了對應API文檔 語法文檔 礼搁,而且VScode 有一個很好的插件 "Tailwind CSS IntelliSense"

image

有了這個插件钓猬,我們就再也不用擔心寫錯的問題了普舆,在我們寫對應元素的時候右側會給我們很好的提示,

image

tailwindcss 設計理念和價值體現(xiàn)

1表悬,它的設計理念

2弥锄,它的價值體現(xiàn)

設計理念

tailwindcss 中一個非常核心的內(nèi)容就是: 每一個類名都代表了一個 css 屬性 ,這個樣式在 tailwindcss 中被稱作為 原子化 CSS

那么想要搞明白這樣的一種設計理念蟆沫,那么我們需要先搞清楚 CSS 設計史上的一些粒度劃分籽暇。

整個前端歷史中,CSS 顆粒度設計主要可以分為 4 種形式( 顆粒度自上而下逐漸增大饭庞,顆粒度越大則約束性越高戒悠,可定制性越弱 ):

1,行內(nèi)樣式:樣式全部寫入行內(nèi)舟山。自由度最高绸狐,可定制化最強。但是不方便樣式的復用捏顺,每次都要寫完整的樣式六孵。

<div style="background-color: #ffffff; color: #333333;"> 我是一個div</div>

2纬黎,原子化 CSS:每一個類名都代表了一個 css 屬性幅骄。自由度依然很強,可定制化依然很高本今,也方便復用拆座。但是大量的樣式會造成大量的類名。

<div class="bg-white text-zinc-800">我是一個div</div>

3冠息,傳統(tǒng)形式:通過一個或幾個具有語義化的 class 來描述一段 css 屬性挪凑。封裝性強,語義化強逛艰,自由度和可定制化性一般(比如 cart 就標記好了當前為一個卡片躏碳,通常邊框、弧度散怖、陰影菇绵、padding 也都一并規(guī)定好了)肄渗。但是大量的 html 需要取大量的語義化 class ,并且在 html 和 css 中需要來回的切換咬最、查找翎嫡。

<div class="container-box desc-container cart">我是一個div</div>

4,組件形式:在 組件庫 中極為常見永乌。封裝性極強(不光封裝了樣式惑申,也封裝了功能),語義化強翅雏。但是自由度和可定制化性比較差圈驼。

<m-cart>我是一個div</m-cart>

那么根據(jù)我們剛才所說,這四種形式的樣式處理方式其實 各有優(yōu)劣望几。

而 tailwindcss 的核心設計理念就是:第二個:原子化的 CSS 碗脊。那么根據(jù)我們剛才的分析,這種方式惟一的問題就是:大量的樣式會造成大量的類名 這樣的情況橄妆。而這樣的一個問題在她的 高自由度衙伶、高定制化、高可復用 的優(yōu)勢之下害碾,也就變得沒有那么重要了矢劲。

價值體現(xiàn)

想要明確 tailwindcss 的價值,那么我們需要先來明確一下 現(xiàn)代的前端應用 開發(fā)的一些問題慌随。

我們以傳統(tǒng)的后臺項目的項目為例芬沉。如項目中使用了 element-plus作為 UI 組件庫 。當我們決定使用 element-plus 的那一刻起阁猜,就決定了 整體的項目樣式為 element 設計風格丸逸。 如果此時我們想要把項目做出個性化的風格出來,那么 ”幾乎是不可能的“剃袍。

不過好在 后臺 系統(tǒng)黄刚,風格本就千篇一律,這樣設計倒也沒有問題民效。但是如果是 前臺 系統(tǒng)呢憔维?

前臺系統(tǒng)講究 高定制化、高個性化畏邢、高交互性 业扒,在這樣的一個要求下,element舒萎、antd程储、vant 這樣的組件庫是否還能夠滿足我們需求呢? 我想答案是肯定的

演示!~

PC

image

H5

image

結語:

講了這些我想大家對tailwind已經(jīng)有一個了解章鲤,其實我只是介紹了tailwind功能的冰山一角致板,他比較強大的功能比如在 tailwind.config.js 文件中進行全局配置,以及樣式不同尺寸的統(tǒng)一管理咏窿、主字號的統(tǒng)一配置等等都還沒有呈現(xiàn)給大家斟或,有興趣的小伙伴可以有時間看看,結尾附上搭建過程集嵌!

tailwind搭建過程

1萝挤,在我們的項目中執(zhí)行 npm install -D tailwindcss@3.0.23 postcss@8.4.8 autoprefixer@10.4.2 ,安裝 tailwindcss

2根欧,執(zhí)行 npx tailwindcss init -p 創(chuàng)建 tailwind.config.js 文件怜珍,該文件為 tailwindcss 的配置文件,該文件默認內(nèi)容為:

image

3凤粗,接下來我們需要添加模板路徑(tailwind 的應用范圍)

4酥泛,在 tailwind.config.js 文件中的 content 選項下,寫入如下內(nèi)容:

module.exports = {

// Tailwind 應用范圍

content: ['./index.html', './src/*/.{vue,js}'],

...

}

5嫌拣,接下來我們需要添加一些 tailwind 的指令

6柔袁,創(chuàng)建 src/styles/index.scss 文件,并寫入如下代碼:

// 導入 tailwind 的基礎指令組件

@tailwind base;

@tailwind components;

@tailwind utilities;

7异逐,然后在 src/main.js 中引入該 index.scss

8捶索,因為我們使用了 scss ,所以需要安裝 sass 灰瞻,執(zhí)行 npm i -D sass@1.45.0 安裝 sass

9腥例,此時 tailwind 已經(jīng)安裝到我們的項目中

幾個亮眼的地方

首先是響應式設計。

css的媒體查詢寫起來還是比較麻煩的酝润,如下:

@media only screen and (max-width: 760px) {
    .navbar {
        width:100%;
    }
}

使用了Tailwind CSS就免去這些繁瑣的東西燎竖。默認情況下,Tailwind使用移動優(yōu)先斷點系統(tǒng)要销,類似于您在Bootstrap或Foundation中可能使用的系統(tǒng)构回。

這意味著未加前綴的實用程序(如uppercase)在所有屏幕尺寸上都有效,而帶前綴的實用程序(如md:uppercase)僅在指定的斷點及以上斷點生效蕉陋。

image.png

如下一段代碼就可以實現(xiàn)不同尺寸顯示不同樣式捐凭,是不是比媒體查詢寫法方便很多呢拨扶!

<div class="bg-red-500 sm:bg-green-500 md:bg-blue-500 lg:bg-pink-500 xl:bg-teal-500"></div>

當然了凳鬓,媒體尺寸斷點也是可以自定義的。

// tailwind.config.js
module.exports = {
  theme: {
    screens: {
      'tablet': '640px',
      // => @media (min-width: 640px) { ... }

      'laptop': '1024px',
      // => @media (min-width: 1024px) { ... }

      'desktop': '1280px',
      // => @media (min-width: 1280px) { ... }
    },
  }
}

第二方面是Postcss運用

Tailwind CSS結合了 postcss患民,將基礎的 css 全部拆分為原子級別缩举,同時還補全各種瀏覽器模式前綴,兼容性更好。例如:border: 1px solid #eee;拆分為:border-width仅孩、border-style托猩、border-color

而且還支持根據(jù)自己設計稿定義契合自己項目的 csss 原子,這點真的很棒辽慕。

第一京腥,如果不是為了快捷開發(fā),恐怕不會有太多人完全滿意傳統(tǒng) CSS 框架的樣式設計溅蛉。 第二公浪,傳統(tǒng) CSS 框架通過“覆蓋”進行定制。一般來講船侧,健康的做法是覆蓋框架提供的變量欠气,但是定制能力很有限。臟一點的做法就是手寫 CSS 覆蓋框架原生樣式镜撩,但是原生樣式之復雜(各種父級的不同情況预柒,偽類的不同情況),哪怕一個小的組件袁梗,你也無法面面俱到宜鸯。并且你最好得看源碼。

第三方面是可維護性問題

就拿我們實現(xiàn)一個按鈕效果來說遮怜,使用utilities class實現(xiàn)的話如下:

<!-- Using utilities -->
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  Button
</button>

如果說有比較常用的顾翼,這里還能使用@apply指令圍繞通用實用程序模式創(chuàng)建抽象,可以輕松解決此問題奈泪。

<!-- Extracting classes using @apply -->
<button class="btn btn-blue">
  Button
</button>

<style>
  .btn {
    @apply font-bold py-2 px-4 rounded;
  }
  .btn-blue {
    @apply bg-blue-500 text-white;
  }
  .btn-blue:hover {
    @apply bg-blue-700;
  }
</style>

這樣維護起來也比較方便适贸,相比bootstrap等這些框架,顯得更加靈活涝桅,可操作性更強拜姿。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冯遂,隨后出現(xiàn)的幾起案子蕊肥,更是在濱河造成了極大的恐慌,老刑警劉巖蛤肌,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壁却,死亡現(xiàn)場離奇詭異,居然都是意外死亡裸准,警方通過查閱死者的電腦和手機展东,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炒俱,“玉大人盐肃,你說我怎么就攤上這事爪膊。” “怎么了砸王?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵推盛,是天一觀的道長。 經(jīng)常有香客問我谦铃,道長耘成,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任驹闰,我火速辦了婚禮凿跳,結果婚禮上,老公的妹妹穿的比我還像新娘疮方。我一直安慰自己控嗜,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布骡显。 她就那樣靜靜地躺著疆栏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惫谤。 梳的紋絲不亂的頭發(fā)上壁顶,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音溜歪,去河邊找鬼若专。 笑死,一個胖子當著我的面吹牛蝴猪,可吹牛的內(nèi)容都是我干的调衰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼自阱,長吁一口氣:“原來是場噩夢啊……” “哼嚎莉!你這毒婦竟也來了?” 一聲冷哼從身側響起沛豌,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤趋箩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后加派,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叫确,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年芍锦,在試婚紗的時候發(fā)現(xiàn)自己被綠了竹勉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡醉旦,死狀恐怖饶米,靈堂內(nèi)的尸體忽然破棺而出桨啃,到底是詐尸還是另有隱情车胡,我是刑警寧澤檬输,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站匈棘,受9級特大地震影響丧慈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜主卫,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一逃默、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧簇搅,春花似錦完域、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姿现,卻和暖如春肠仪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背备典。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工异旧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人提佣。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓吮蛹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拌屏。 傳聞我的和親對象是個殘疾皇子匹涮,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345