回覆列表
  • 1 # 做前端的蝸牛

    postcss是什麼?

    根據官網的解釋,它是一種javascript編寫的工具,用來轉化css的。可以認為它是處理css的外掛集合,需要配合諸如webpack、gulp等編譯工具才能展現它強大的能力。

    目前社群提供了非常多的外掛,比較有名的如下:

    autoprefixer 可以為css的屬性配置相容性的字首,不需要手動新增postcss-preset-env 允許你使用更加現代的css特性stylelint 檢查css語法錯誤cssnano css的壓縮器等等postcss的原理

    如果大家瞭解babel的原理,那就應該聽說過AST即抽象語法樹。編譯器將字串進行詞法分析、語法分析,再做轉換,最終達到預期的結果。postcss也是同樣的原理,這個包已經為使用者提供瞭解析的方法parse,並且也提供了很多轉化的API,利用這些就可以自己開發一款postcss外掛了。

    css Module是什麼?

    先前呢,我們使用css選擇器,它是對整個頁面是有效的,也就是全域性的,當你每次迭代需求的時候,需要考慮每次新增新的css是否會影響到其他地方,所以我們有時選擇為樣式表新增名稱空間。css Module為我們提供了另外一種開發方式,它可以使css具有區域性作用域。

    用法如下:

    用法是如此的簡單,基本一看就會,css-loader為我們提供了css Module的開關,只要為css-loader新增引數選項modules就可以開啟。注意:它必須放在less或者sass的loader之前。

    那它如何做到區域性作用域的呢?

    開啟element面板可以發現,它把class變成了md5戳,對應每個元件,保持唯一。

    vue的scoped

    由此我們聯想到vue的scoped,它也解決了css區域性作用域的問題!

    它在dom上生成了一個data屬性,並且給class選擇器添加了屬性選擇器,類似於之前的md5戳。不過由於添加了屬性選擇器,使得選擇器的優先順序變高了,想在元件外面覆蓋css屬性就變得不那麼容易了!

  • 中秋節和大豐收的關聯?
  • 形容樹木多的成語?