如果今天我要做一個網站,第一次完成的第一個頁面要上線前,最少會包含幾支css:
建議:
- reset
因為不是自己的,可以的話建議分開。 - layout
header、nav、footer這類的 - content
真正在寫的
如果有30頁,可能有幾支CSS
32頁
- reset(1)
- layout(1)
- content(30)
- (僅供參考)
如果是一頁式呢?
- css*1 (來自scss)
- scss(*n)
all.scss1
2
3
4
5@import './layout/header';
@import './layout/nav';
@import './layout/footer';
...
...
你的reset哪裡來
最好一定要有一個常用的公用檔,可以放在自己的電腦裡再import進來。
@import
all.scss1
2
3
4
5
6@import './layout/header';
@import './layout/nav';
@import './layout/footer';
..
...
....
- import的位置取決於你的樣式要在哪個位置,會影響權重。
- 也可以巢狀import
_filename
可以將檔案名稱加上底線,變成專門用來import的scss檔,自己本身不會被sass complier產出css檔
集中管理-範例(請依個人需求規劃)
- normalize.scss (reset)
- layout.scss
1 | @import './utils/_init'; |
- content.scss
1 | @import './utils/_init'; |
_init.scss1
2
3
4
5@import './utils/variable';
@import './utils/function';
@import './utils/extend';
@import './utils/extend';
....
- _variable.scss 管理變數
- _function.scss 管理函式
- _extend.scss 管理繼承
- _mixin.scss 管理屬性
OS:內容不多按照順序寫在一起就好不用分檔案免得自找麻煩。
- 變數
- function
- extend
- mixin
注意:如果你import的scss會變成css,不要import兩次以上
rgba
1 | $color: #3356db; |
for
1 | $light: white; |
輸出8個階段的黑到白1
2
3
4
5
6
7
8.gray8{
color: #1a1a1a;
}
..
...
.gray1{
color: white;
}
除了巢狀以外,透過一些規範我們有一些更好的寫法
CSS MODULAR(模組化)設計模式
閱讀性、重用性、維護姓、擴充性
- OOCSS
- SMACSS
- BEM
OOCSS 提升CSS複用性
主要理念:分離結構與主題,分離容器與內容
- 適當的使用有助於減少你網頁上重複性的程式碼
- 網站規模小時,不建議套用OOCSS設計模式:為了讓一組CSS能夠套用在各個頁面上,勢必需要設定很多獨立功能的CSS,所以光你在設計OOCSS理念的程式碼的時間,你可能就已經寫好了。
資料來源:OOCSS - 提升CSS複用性
SMACSS(大型網站推薦)
Module要設計為獨立的樣式, 不該綁定在父容器、ID選擇器、HTML元素,並同時能靈活套用至各頁面上。
主要理念:
- 結構分類
- 命名規則
- HTML/CSS分離
詳細資料參考:SMACSS - Module Rules
BEM 設計模式
- BLOCK(區塊)
- ELEMENT(按鈕/標題)
- MODIFIER(狀態)
BEM的功能主要就是要讓你在瀏覽HTML CODE時,能夠透過觀察class,就能了解你的CSS架構,讓你不用再回去追CSS Code才辨別得出哪些是Layout、Module、OOCSS,就算你專案沒打算使用BEM,那也可以套用其觀念,讓團隊都有個一致的命名規則,讓同事都能一目了然地看懂網站上的架構。
詳細資料參考:BEM 設計模式