Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CSS 不是我們想像的這麼簡單! [台北場]
Search
Kuro Hsu
June 05, 2019
Education
2.8k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CSS 不是我們想像的這麼簡單! [台北場]
v-tw meetup #1 2019/06/05
活動錄影:
https://www.youtube.com/watch?v=dtX51ru_eXU
Kuro Hsu
June 05, 2019
More Decks by Kuro Hsu
See All by Kuro Hsu
Laravel x Vite
kurotanshi
0
700
[.NET Conf 2020 Taiwan] 以輕前端視角進入 Vue 3.0 的世界
kurotanshi
0
790
[MOPCON 2020] vite: Make web dev fast again
kurotanshi
0
2.5k
[ModernWeb'20] Vue.js :The Bad Parts
kurotanshi
1
190
[MOPCON 2019] Vue.js 3.0 與 Composition API 的變革
kurotanshi
1
1.4k
[JSDC2019] 我有一堆選擇 Vue 開發框架的理由
kurotanshi
1
860
[COSCUP 2019] 前端工程師的養成之路與開源工具
kurotanshi
3
460
初探 Vue 3.0 Function API
kurotanshi
4
3.1k
VueJS Style Guide 導讀
kurotanshi
6
1.9k
Other Decks in Education
See All in Education
2026年度春学期 統計学 第8回(オンデマンド配信回) 演習(1)・問題に対する答案の書き方 (2026. 5. 21)
akiraasano
PRO
0
190
2026年度春学期 統計学 第13回 不確かな測定の不確かさを測る ― 不偏分散とt分布 (2026. 6. 25)
akiraasano
PRO
1
170
「答えを出す」より「わかる」をつくる
kzkmaeda
1
280
Fundamentos, Caracteristicas y Aplicaciones de los Modulos NumPy , Matplotlib y Pandas
robintux
0
220
2026年度春学期 統計学 第11回 分布の「型」を考える - 確率分布モデルと正規分布 (2026. 6. 11)
akiraasano
PRO
0
170
Case Studies and Future Research - Lecture 12 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
250
遊ぶかね欲しさの犯行(ルビ:労働)です
shirayanagiryuji
0
240
[2026前期火5] 論理学(京都大学文学部 前期 第6回)「かつとまたはの規則」
yatabe
0
480
学習者データを「見る」:外国語教師のためのデータの入力、分析、解釈方法
uranoken
0
270
生成AI時代のエンジニア育成について考えてみた
akasan
0
230
2026年度春学期 統計学 第9回 確からしさを記述する ー 確率 (2026. 5. 28)
akiraasano
PRO
0
190
2026年度春学期 統計学 第10回 分布の推測とは - 標本調査,度数分布と確率分布 (2026. 6. 4)
akiraasano
PRO
0
190
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
4.6M
Visualization
eitanlees
152
17k
Rails Girls Zürich Keynote
gr2m
96
14k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
290
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
670
The Language of Interfaces
destraynor
162
27k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Thoughts on Productivity
jonyablonski
76
5.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
CSS 不是我們想像的 這麼簡單! Kuro Hsu @ v-tw meetup #1 2019/06/05
̨̏ఙ
感謝場地⽀支援
Kuro Hsu https://kuro.tw
[email protected]
@kurotanshi
我今天不是來來教⼤大家寫 CSS 的
⾝身為前端⼯工程師 你認為 CSS 是什什麼?
代碼寫進去 畫⾯面跑出來來 前端發⼤大財 ⼤大家以為的 CSS
實際上的 CSS
CSS 好難 CSS
https://www.slideshare.net/kurotanshi/css-oocss-smacss-bem
https://www.slideshare.net/kurotanshi/css-oocss-smacss-bem
CSS 出了了什什麼問題
None
None
Simple !== Easy
⿊黑暗時期 樣式、腳本、結構⼤大鍋炒 <font size="3" color="red">…</font> <center onclick="…">…</center> <b>…</b> <i>…</i> <u>…</u>
https://twitter.com/ivantodorov/status/324420248201736195
None
CAPFPP Copy And Paste From Past Projects
古典時期 網⾴頁結構的關注點分離
http://www.csszengarden.com/tr/zh-tw/
http://www.csszengarden.com/219/
http://www.csszengarden.com/215/
http://www.csszengarden.com/220/
• ⼿手⼯工藝之美 • HTML、CSS、JS 依照功能拆分 • 結構良好、具語意的 HTML • 不同的
CSS 賦予不同⾯面貌
None
None
None
None
None
!important
None
困境 • Class 命名 • CSS Code 難以重複使⽤用 • 樣式的優先序與衝突
• !important
啟蒙時代 CSS ⽅方法論的崛起
OOCSS 那年年代物件導向正夯
兩兩⼤大原則 • Separate Structure and Skin 結構與外觀分離 • Separate Container
and Content 容器與內容分離
<div class="media"> <div class="media-img"> <img src="http://placehold.it/80x80" alt=""> </div> <div class="media-body">
<p>...</p> </div> </div>
<div class="media media-shadow"> <div class="media-img"> <img src="http://placehold.it/80x80" alt=""> </div> <div
class="media-body"> <p>...</p> </div> </div>
<div class="media media-no-border"> <div class="media-img"> <img src="http://placehold.it/80x80" alt=""> </div> <div
class="media-body"> <p>...</p> </div> </div>
None
None
None
模組化、架構化
良好的 CSS 架構 • 可預測性 - Predictable • 可重複使⽤用 -
Reusable • 容易易維護 - Maintainable • 可擴充性 - Scalable
第⼀一次⼯工業⾰革命 Sass / Compass / Stylus…
None
SMACSS Scalable and Modular Architecture for CSS
將結構分類 • Base - CSS Reset / CSS Normalize /
global styles… • Layout - header / footer / content / sidebar … • Module - list / button / components … • State - active / error / hidden … • Theme
Layout
Module
State
CSS 與 HTML 分離
.box, .box h2, .box ul, .box p { … }
.box, .box h2, .box ul, .box p { … }
.box, .box .header, .box .body { … }
.box, .box h2, .box ul, .box p { … }
.box, .box .header, .box .body { … } .box, .box-header, .box-body { … }
命名學 BEM
元件時代的濫濫觴 • B - Block • E - Element •
M - Modifier
None
None
None
None
.block { ... } .block--modifier { ... } .block__element {
... } .block__element--modifier { ... }
樣式原⼦子化 Atomic CSS 也有⼈人稱 functional CSS 物件導向弱掉了了 這年年頭叫 functional 比較潮
Good Bad
None
None
None
新需求
新需求 - 2
None
新需求 - 3
吾⽣生有涯 ⽽而需求無涯 - 莊⼦子 沒有說過
None
Thinking in Atomic • 變化是可被預測的 - Changes are predictable •
作⽤用範圍有限 - Scope is limited • 精簡的 CSS - CSS is lean • 與元件解耦 - Components are portable • 初學者易易上⼿手 - Beginner-friendly
⼤大 Component 時代 CSS Module、CSS in JS、scoped styles …
None
• CSS Modules,透過 webpack 編譯 • 各種 CSS in JS
解決⽅方案 ( React ) • 寫在 .vue file 中的 scoped CSS • Angular 裝飾⼦子的 CSS • 現代的關注點分離 - 從功能到元件
HTML Script Style .vue file
CSS Modules in Vue
None
None
Scoped Style
None
None
結論
語意 vs 樣式
肥 CSS 還是肥 HTML
關注點分離的昨是今非
選擇來來⾃自經驗的累積 所有⽅方法的背後都有個難解的問題
⽅方法無分好壞 沒有絕對答案
適合你的才是正姐 正解
⼈人⽣生⽽而⾃自由, 卻無往不在枷鎖之中 - 盧梭
None
CSS 很⾃自由 享受⾃自由要有更更⾼高的⾃自律律
資源推薦 & 友情⼯工商
https://cssguidelin.es/
https://csswizardry.com/
https://www.youtube.com/user/AmosLee1
https://www.hexschool.com/courses/sass.html
下期預告 v-tw meetup 七⽉月份活動,時間地點未定
Thanks