Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
140
Concrete Programming
simonpai
1
130
Other Decks in Technology
See All in Technology
2026_devsumi_ozono.pdf
o3
2
330
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
150
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
160
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
160
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
300
あるけみー式LTスライド作成術
alchemy1115
1
170
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
380
20260912_スクフェス三河
kgnkhkr
0
270
AIで仕事のやり方を変える
matsu7874
3
1k
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
120
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
Mind Mapping
helmedeiros
1
350
BBQ
matthewcrist
89
10k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
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