26
Anna Su PIXNET F2E 簡單玩

CSS modules 簡單玩

  • Upload
    anna-su

  • View
    806

  • Download
    2

Embed Size (px)

Citation preview

Page 1: CSS modules 簡單玩

Anna Su PIXNET F2E

簡單玩

Page 2: CSS modules 簡單玩

Agenda - CSS MODULES

基本簡介特⾊色說明DEMO

Page 3: CSS modules 簡單玩

CSS MODULES

基本簡介之前...了解

Page 4: CSS modules 簡單玩

Agenda - 為什麼要學 CSS MODULES

先談談為什麼要學?

圖⽚片來源

Page 5: CSS modules 簡單玩

Agenda - 為什麼要學 CSS MODULES

⼯工程師的煩惱

圖⽚片來源

Page 6: CSS modules 簡單玩

Agenda - 為什麼要學 CSS MODULES

1.等下要吃什麼?2.命名

圖⽚片來源

???

⼯工程師常常要思考兩件事情:

Page 7: CSS modules 簡單玩

Agenda - 為什麼要學 CSS MODULES

1.等下要吃什麼?總會有⼈人幫忙想...

圖⽚片來源

Page 8: CSS modules 簡單玩

Agenda - 為什麼要學 CSS MODULES

2. 命名越多⼈人想越⿇麻煩...

圖⽚片來源

Page 9: CSS modules 簡單玩

Agenda - 為什麼要學 CSS MODULES

可以幫你處理 CSS 的命名!!

CSS MODULES

Page 10: CSS modules 簡單玩

Agenda - CSS MODULES 基本簡介

A CSS Module is a CSS file in which all class names and animation names are scoped locally by default.

Page 11: CSS modules 簡單玩

Agenda - CSS MODULES 基本簡介

The End of Global CSS

Page 12: CSS modules 簡單玩

Agenda - CSS MODULES 特⾊色說明

幫你命名不⽤用再搞懂 OOCSS BEM SMACSS

Page 13: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

:global .page { padding: 20px; }

.title { composes: title from "./mixins.css"; color: green; }

.article { font-size: 16px; }

.title { color: black; font-size: 40px; }

.title:hover { color: red; }

/* styles.css */ /* mixins.css */

Page 14: CSS modules 簡單玩

Agenda - CSS MODULES 特⾊色說明

使⽤用 :global 寫全域 class使⽤用 composes: 載⼊入外部 CSS不是全域 class, class 都是亂數產⽣生

Page 15: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

:global .page { padding: 20px; }

.page { padding: 20px; }

Before After

Page 16: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

.title { composes: title from "./mixins.css"; color: green; }

._title_116zl_1 { color: black; font-size: 40px; }

._title_116zl_1:hover { color: red; }

._title_xkpkl_5 { color: green; }

Before After

Page 17: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

.article { font-size: 16px; }

._article_xkpkl_10 { font-size: 16px; }

Before After

Page 18: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

:global .page { padding: 20px; }

.title { composes: title from "./mixins.css"; color: green; }

.article { font-size: 16px; }

._title_116zl_1 { color: black; font-size: 40px; }

._title_116zl_1:hover { color: red; }

.page { padding: 20px; }

._title_xkpkl_5 { color: green; }

._article_xkpkl_10 { font-size: 16px; }

Before After

Page 19: CSS modules 簡單玩

Agenda - CSS MODULES 特⾊色說明the plugin will give you a JSON object for transformed classes:

{ "title": "_title_xkpkl_5 _title_116zl_1", "article": "_article_xkpkl_10", }

Page 20: CSS modules 簡單玩

Agenda - CSS MODULES 特⾊色說明

效能會好嗎?產⽣生⼀一堆亂數

Page 21: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

.article li { font-size: 16px; }

._article_xkpkl_10 { font-size: 16px; }

Normal CSS Modules

找⾴頁⾯面上⾯面所有 li 元素 hash 不會重複,只會找⼀一個

Page 22: CSS modules 簡單玩

Agenda - CSS MODULES 特⾊色說明

CSS MODULES 優化:

命名 效能

Page 23: CSS modules 簡單玩

Agenda - CSS MODULES 使⽤用⽅方法

localIdentName=[name]__[local]___[hash:base64:5]

可以⾃自定義名稱

例如,在webpack.config 設定:

index__titlePixnet___3Y30S

Page 24: CSS modules 簡單玩

Agenda - CSS MODULES

DEMO

Page 26: CSS modules 簡單玩

Thanks! 感謝聆聽 :)