更多 vs 更少 - 簡單比較
神奇的是,雖然在標簽里面放那么多類讓我非常不爽,可是人們愛哈利,因為他太特么能說了。提倡的某些東西,比如說 OOCSS 和單一責任原則,從我自己創建的一系列日益復雜的網站來看,我可以說這確實值得對樣式行為進行解耦,不過直到最近我才找到一種讓我覺得滿意的方式來實現它。
我原先有做過一個 BEM 的版本,它強調了獨立高于重用 ‐ 每個新的塊默認是沒有樣式繼承的,允許組件獨立開發并且可以避免打亂頁面其它樣式的風險。不過代價就是碎片化(fragmentation) ‐ 忽然你會發現你有了 10 種不同的樣式鏈接,12 種不同的藍色,18 種差別細小的按鈕樣式等。妮可?沙利文,OOCSS 的作者,去年在墨爾本做了一個超贊的演示,講到了這個問題是有多普遍,以及怎么解決它。
對我來說,我覺得可以接受的解決方案是,深入 CSS 的預處理機能,從而取得 BEM 的獨立性以及 OOCSS 的一致性。比如說,下面這樣的:
應該改成這樣:
我成功終結了充滿了占位符的文件,比如滿眼都是那些_typography.scss 和 _brand.scss,這不但讓我有能力控制碎片化,同時還能默認保持了樣式的對每個新組件的獨立性。所有的東西都挺好的,起碼有那么一段時間是這樣。
修飾符: M 是怎樣破壞 BEM 的
只要你做關于 CSS 類的命名 & 維護方面的任何研究,你一定會要看到尼古拉斯.加拉格爾的杰作"關于 HTML 的語義和前端架構"。其中一部分特別吸引我,他稱之為修飾符的 '單類模式' vs '多類模式'。簡單的說,你的 HTML 會有兩個版本,看起來像這樣:
這通過兩個備選的 CSS 模式實現:
新聞熱點
疑難解答