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
TSCSS: Component CSS Parameterization
Search
Simon Pai
January 11, 2015
Technology
3k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TSCSS: Component CSS Parameterization
Simon Pai
January 11, 2015
More Decks by Simon Pai
See All by Simon Pai
React Hooks
simonpai
0
310
On Scraper
simonpai
0
130
Concrete Programming
simonpai
1
130
Other Decks in Technology
See All in Technology
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.1k
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
170
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
250
世界、断片、モデル。そして理解
ardbeg1958
1
120
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
440
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
250
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
140
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
260
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
730
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
270
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
380
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
Navigating Weather and Climate Data
rabernat
0
340
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Building AI with AI
inesmontani
PRO
1
1.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
HDC tutorial
michielstock
2
740
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
570
Believing is Seeing
oripsolob
1
170
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Transcript
元件 CSS 參數化 TSCSS / Simon Pai
平常在做什 • 前端 程師 @ 奇科 – ZK: Java servlet
based web UI framework – Quire.io: 樹狀的 task manager
平常在做什 • 共 創辦人 @ Bookshow 說書會 – 知識影音化 Open
Meeting – 訪談錄影 活動直播
為什 要 CSS 參數化 • 統一設計 – 外觀一致性 • 統一實作
– DRY Do ’t Repeat Yourself 好維護
如何 CSS 參數化 • 統一設計 – Design guildline • 統一實作
– 良好的 CSS class 命 策略 – CSS library / pre-processor:LESS Scss/Sass 等
如果你是元件集的創作者 • 統一設計 – 外觀一致性... 但無法預測使用者會如何排列你 的元件 – 客戶會希望能客製整套外觀 (佈
/Theme) • 統一實作 – DRY Do ’t Repeat Yourself 好維護 – 大幅降 客製佈 的 本 • 這是 ZK 尋求 CSS 參數化的最大動機
元件與佈 的乘法效應 • ZK 7 有 50+ 個元件與 4 個官方佈
– (以及一堆客戶客製的佈 ) • 每多一個佈 ,要多刻 50+ 個元件的 CSS • 每多一個元件,要多刻 4 個佈 的 CSS
從 ZK 這個產品說起 • ZK 是個元件集 (component set) • 2006
(ZK 1) - 現在 (ZK 7) • Panel, Tabbox, ... 等 50+ 個元件
ZK 3 長這樣
ZK 5 長這樣 • 看不 去, 到了一 設計師
但是並沒有解決客製 本問題 • 掃一遍 CSS 中的色 碼,看起來那 單 純的孩子,裡面居 然有
50+ 種顏色 • 客製一套佈 還是 需要重做一套設計 + 重刻一遍 CSS
問題在於硬幹的設計流程 元件 外觀 憑感覺維持一致性
如何為元件集打造統一外觀 • 統一設計 – 因為無法掌握使用者如何排列你的元件,必需 思考外觀背後的理由 • 統一實作 – 根據理由而不是根據外觀來抽變數
統一實作前,必先統一設計
硬幹的設計流程 元件 外觀
富有哲學氣息的設計流程 元件 外觀 元件語義 元素外觀
Separator (分隔線) • 分隔線的意義是什 ?
Separator (分隔線) • 分隔線的意義:區分 或
Groupbox • ZK 有一個元件叫 Groupbox,大家覺得它的 意義是什 ?
Groupbox • Groupbox 的意義:區分 外
元件中的語義 • 區隔 (grouping) • 操作 (operation) • 狀態 (state)
• 部 (parts) 等
元件中的語義 • 區隔 (grouping) – 容器 (container) 與分隔線 (separator)
元件中的語義 • 操作 (operation) – 文字輸入 (text input) – 可以按的
(clickable) – 可以拖的 (draggable) 等 • 在各種 design guildline 都有探討
元件中的語義 • 狀態 (state) – 商業邏輯 (business logic) • Selected
• Error 等 – 互動 (interactive) • Clicked • Hovered • Focused • Disabled 等
元件中的語義 • 部 (parts) prpr -icon -background -border -text
元件中的語義 • 部 (parts) -body (-head) (-foot)
元件中的語義 • 部 (parts) -item -item -item -item -item Collection
別鑽牛角尖 (一) • 並不是符合某項語義就一定要根據它來設 計 – 而是你 可以 根據它來設計 –
遇到衝突依然要靠 人智慧取捨
別鑽牛角尖 (一) • Tabbox (摺疊式) 的 head 部 時也是 clickable
– 要做的像其他元件的 head 還是像 button? – 取捨:ZK 覺得像 head 比較 重要,clickable 用 cursor 表達就好 – jQuery UI 的 ThemeRoller 就把 樣的部分做 button 的顏色,見人見智
別鑽牛角尖 (二) • 語義元素無法窮盡所有外觀要素 – 並非所有外觀細節背後都可以 到乾淨的理由 – 狀況好的 大約可以涵蓋
70-80% – 剩 的細節硬幹無妨
統一設計後,必須統一實作
建立 demo • ZK Theme Demo – 所有外觀都盡量展示出來,因為元件是活的 有很多狀態,非常容易掉芝 –
把設計 認定應 外觀一致的元件排在一起 – 客製佈 的時候也方便直接展示給設計師或客 戶看
DRY CSS • 去除 CSS 中重覆資訊的方法 – 抽出 CSS class
– 將 樣的 CSS 值抽 變數或 mixin (LESS/Scss/etc) • 決定 CSS class 規劃 – ZK 礙於其 CSS 規劃無法抽 class,歷 共業 – 請參考 Bootstrap 3 或 Semantic UI 等套件的實作
CSS class 命 策略 • 表意 – z-pa el ,
z-panel- ody 元件) – sele ted 商業邏輯) • 表象 – gree , s all , light
CSS 變數命 策略 • 表意 – @z-panel-border-color: @border-color; – @border-color
: @light-green; • 表象 – @light-green: #7EA656; – @large-font-size: 32px;
CSS Class • CSS class 是 DOM 與外觀之間的合約 Class DOM
Element DOM Element Style Value Style Value
表意與表象 • CSS 最終都是將象 (外觀值) 賦予到意的身 – 變數之間都是把表象的 assign 給表意的
• @text-color: @gray; • @gray: @text-color; (?) – 表象的 class 裡也不會放表意的變數 • .gray { color: @text-color; } (?)
CSS 參數化前 表意 表象 Class Class 值
CSS 參數化後 表意 表象 Class Class 值 變數 變數 變數
別鑽牛角尖 表意 表象 Class Class 值 變數 變數 變數
表意與表象 • CSS 最終都是將象 (外觀值) 賦予到意的身 元件 外觀 元件語義 元素外觀
表意 表象
ZK 7 長這樣 • 套從 ZK 5 繼 來,參數化後的佈
第四套佈 • 依靠參數 + 微調做出 微軟系的佈 Atlantic
ZK 7 Theme Rolling • 關鍵字: ZK ThemeRoller
總結一
統一實作前,必先統一設計 統一設計後,必須統一實作
設計流程的秘訣 元件 外觀 元件語義 元素外觀 表意 表象
參數化 CSS 的秘訣 表意 表象 Class Class 值 變數 變數
變數
商服務 • 奇科 – 徵 職 UI/UX 設計師 前端 程師
– jobs @ potix.com • Bookshow – 合作的網站設計師 影片視覺設計師 – 請來 或 hello @ bookshow.tw