OKR
自主學習
SCSS/BEM
學習來源:
BEM官方文件
youtube資源學習
BEM命名範例
如果是Element:blockname__elementname ( 二個下底線 _ _ )
如果是Modifier:blockname__elementname–ModifierStatus ( 二個連字符 - - )
過往都是直接寫active/hidden/success 等寫法,BEM寫法換成以下方式
當Html架構寫好後,開始撰寫BEM樣式,結合SCSS寫法
Classname也可以加上 ' - ',使用前缀
在撰寫時,除了更換命名的方式,但撰寫SCSS結構時也需要一併思考,整個結構先以一個Block命名開始,其它必須統一一致,例如:
我們應該怎麼寫SCSS?
實際撰寫時,當使用Modifiter時–active,雖然搭配SCSS天衣無縫,不需要寫太長的名稱,但若是使用在JS上時,你必須要將完整的Classname寫上去,雖然一樣名稱太長,但一樣若能讓每個人容易理解之優點來說還是大過於此缺點,也或許是自己可能還沒尋找到最佳方法。
實際撰寫時一定要整個結構一致,否則會吃不到子層的樣式,遇到問題是希望在同層加上同一結構但不同類型的Class狀態。
例如這張卡片需要dark(暗色系)或是light(亮色系)。下方範例會發什麼事情,.card.light的樣式會吃不到底下的.card__item樣式,意思是CSS沒辦法吃到(.card.light .card__item),猜測應該是撰寫BEM規則時,SCSS在編譯時可能沒法整併。
改寫方法:
這樣每個class在同一個card Block底下結構均都不受影響,不需要為了某個結構在重覆改寫。
在查看BEM官方文件CSS層疊繼承所帶來的問題,發現了原來自己撰寫時也可能會犯下的不好習慣,有些地方過度濫用CSS層疊繼承,覆蓋原有編寫的樣式問題。下方的圖片反而造成樣式不斷被重覆改寫,程式碼太多/浪費等問題。
CSS層疊繼承
改寫方法:
如同模組化的概念,樣式應該要更加彈性,應該是要可獨立/可重用/不受任何父層影響/更好維護。