css modules是什么?


什么是CSS Modules?

 

官方的介紹是:

所有的 class 的名稱和動畫的名稱默認屬於本地作用域的 CSS 文件。所以 CSS Modules 不是一個官方的規范,也不是瀏覽器的一種機制,它是一種構建步驟中的一個進程。(構建通常需要 webpack 或者 browserify 的幫助)。通過構建工具的幫助,可以將 class 的名字或者選擇器的名字作用域化。(類似命名空間化)。

通過構建工具來使指定class達到scope的過程。

 

css modules優勢

  • 解決全局命名沖突問題 css modules只關心組件本身 命名唯一

  • 模塊化 可以使用composes來引入自身模塊中的樣式以及另一個模塊的樣式

  • 解決嵌套層次過深的問題 使用扁平化的類名

 

為什么引入CSS Modules?

1)、全局樣式沖突

webpack進行打包時,將所有js文件導入到入口App.js文件中,樣式也會統一加載到入口中,根據css的layout規則,后面的樣式會覆蓋掉前面的樣式聲明,造成全局樣式的覆蓋問題。

2)、嵌套層次過深的選擇器

為了解決全局樣式的沖突問題,不得不引入一些特地命名namespace來區分,但是往往有些namespace命名得不夠清晰,就會造成要想下一個樣式不會覆蓋,就要再加一個新的命名空間來進行區分,最終可能一個元素的顯示樣式嵌套特別深。

嵌套特別深會造成的問題:

 

- 根據CSS選擇器的解析規則可以知道,層級越深,比較的次數也就越多,影響整個頁面的渲染

- 增加了不必要的字節開銷

- 語義混亂 可擴展性不好,約束越多,擴展性越差

3)、無法共享變量

復雜組件要使用 JS 和 CSS 來共同處理樣式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM