MOPCON議程筆記:廖洧杰老師-CSS 架構演化史

影片來源:MOPCON 2020 議程錄影

分享人:廖洧杰 六角學院 前端工程師

內容:

CSS 誕生到至今 26 個年頭,為了符合瀏覽器使用者的需求而不停演化。本議程將帶領會眾,探討近年設計模式與框架的演進,深入了解 CSS/SCSS Component、Utility 發展史,同時將分享 Bootstrap 5、Tailwind CSS 來介紹未來 CSS 架構趨勢。

議程簡報連結


三大主軸:容器container、元件component、通用類別utilities

以按鈕舉例,一開始習慣在HTML 標籤選擇器撰寫,並使用後代選擇器拆分樣式,當嘗試合併class時會導致選擇器過於臃腫,此時開始有元件設計...

一、容器 Container

設計時一定要先產生容器,bootstrap 為隔線系統

二、元件設計 Component

以OOCSS為例-容器與內容分離

不再跟容器綁在一起,元件應該抽離,在任何容器都可以使用

class="btn"

class="btn btn-green btn-lg"

元件裡面還可以有子元件,子元件也可以成為容器,以卡片為例可分為:

.card、.card-header、.card-body

不會看到容器與元件融合(如:.col-9 .card{})

因為不可能寫一個卡片,只存在col-9中

三、通用類別 Utilities

使用時機:當元件需要微調時

結構與樣式分離易導致元件臃腫,無法專注於元件本身的開發,元件搭配通用類別後,解決了元件臃腫化。

CSS 框架時間軸:

2010---Bootstrap--2015--tailwindcss---2020---BS5

Bootstrap 4

開始加入通用類別的概念

Bootstrap 5

Bootstrap 5 讓我們有辦法自訂通用類別,透過編譯的方式,編譯出 class 設定,除此之外也支援RWD斷點設計。

Tailwind CSS :utility first

此框架只有通用類別,可以像積木一樣組出想要的東西

範例:

<button class="bg-blue-300 text-white font-bold py-4 rounded"
Button
</button>

優點:

1. 偽類一目了然(hover:bg-blue-700)

2. 能搭配段點來做客製化(md:hover:bg-red-700)

介紹:

1. 不建議直接使用CDN,因為mb很大

2. 採用 PostCSS 來編譯

3. 雖然 mb 很大,但是是可以壓縮的(有用到的才complier出來)

4. 可用 tailiwind variant 為特定utility 增加偽類、斷點

5. 可使用apply設計成元件

主要核心為 tailwind.config.js 設定檔,這個設定檔有點像 Bootstrap 的 SASS 變數


結尾

1.Setting

變數variables:

  • BS5:.SCSS
  • Tailwind:.js
  • CSS4 :也有變數、可以靠這個做管理

2. Reset、Base

Reset

BS5、Tailwind 都使用 Normalize

Base

設定全域網頁標籤(如:a{color:#ff0000})

3. Tools-開發資產

bootstrap5:新的機制- helper 資料夾:

將很多 SCSS 小功能(常使用、有技巧的)做統一的管理

4. Components

- BS4:有component

- Tailwind:沒有,希望專注於元件的開發

5. Utilities

- Tailwind:王者

- BS5:佔30%

6. Libarary

Bootstrap5:RFS(Responsize font size):響應式文字設定:

使用vw(依照螢幕解析度伸縮) 解決這個問題


懶人建議包

Bootstrap 新手建議學

1. utility 不適合新手開發

2. Bootstrap 有 CSS 元件、JS 套件

3. Bootstrap 會顧及無障礙與使用這體驗

Tailwind 適合自幹框架派

1. utility-first 與 JS SPA Component

2. utility-first 適合有一定 CSS 開發經驗的開發者