vue項目開發之樣式篇——postcss插件

一、postcss插件簡介及安裝

PostCSS是一款使用插件去轉換CSS的工具,有許多非常好用有趣的插件,例如autoprefixer,press或者postcss-preset-env等。這些都是基於postcss插件去實現的。postcss插件需要結合webpack打包工具去一起使用,另生產樣式文件時還可以結合gulp使用。
安裝方法:先安裝插件

npm i -s postcss-preset-env

再配置文件:使用.postcssrc(JSON),.postcssrc.js或者postcss.config.js

二、插件介紹

1.postcss-advanced-variables

可以像scss一樣,在css文件中寫變量 、條件、循環語法。
官方文檔

2.postcss-partial-import

可以使用@import引入別的模塊樣式
官方文檔

3.postcss-px-to-viewport(移動端適配方案)☆☆☆

適合於移動端適配方案開發,將px單位轉化成vh,vw百分比
配置如下:

'postcss-px-to-viewport': {
      unitToConvert: "px", // 默認值`px`,需要轉換的單位
      viewportWidth: 375, // 視窗的寬度,對應設計稿寬度
      viewportHeight: 667, // 視窗的高度, 根據375設備的寬度來指定,一般是667,也可不配置
      unitPrecision: 3, // 指定`px`轉換爲視窗單位值的小數位數
      propList: ["*"], // 轉化爲vw的屬性列表
      viewportUnit: "vw", // 指定需要轉換成視窗單位
      fontViewportUnit: "vw", // 字體使用的視窗單位
      selectorBlaskList: [".ignore-"], // 指定不需要轉換爲視窗單位的類
      mediaQuery: false, // 允許在媒體查詢中轉換`px`
      minPixelValue: 1, // 小於或等於`1px`時不轉換爲視窗單位
      replace: true, // 是否直接更換屬性值而不添加備用屬性
      exclude: [], // 忽略某些文件夾下的文件或特定文件
      landscape: false, // 是否添加根據landscapeWidth生成的媒體查詢條件 @media (orientation: landscape)
      landscapeUnit: "vw", // 橫屏時使用的單位
      landscapeWidth: 1134 // 橫屏時使用的視窗寬度
    }

注意:
1、@media 默認不轉化px,可配置mediaQuery: true
2、@keyframes 默認不轉化px,可手動轉vw
官方中文文檔

4.autoprefixer

可根據不同瀏覽器生產兼容瀏覽器樣式前綴,不用手動一一添加前綴
官方中文文檔

5.precss

可以像scss一樣,在css文件中寫混合、模塊化語法。
官方中文文檔

更多有趣的插件請☞這裏

6.postcss-cssnext

7.postcss-modules

8.stylelint

9.LostGrid

三、配置

安裝好項目依賴後postcss在根目錄下配置postcss.config.js文件,代碼如下

module.exports = {
  plugins: {
    "postcss-partial-import": {},
    precss: {},
    "postcss-advanced-variables": {},
    autoprefixer: {},
    'postcss-px-to-viewport': {
      unitToConvert: "px", // 默認值`px`,需要轉換的單位
      viewportWidth: 375, // 視窗的寬度,對應設計稿寬度
      viewportHeight: 667, // 視窗的高度, 根據375設備的寬度來指定,一般是667,也可不配置
      unitPrecision: 3, // 指定`px`轉換爲視窗單位值的小數位數
      propList: ["*"], // 轉化爲vw的屬性列表
      viewportUnit: "vw", // 指定需要轉換成視窗單位
      fontViewportUnit: "vw", // 字體使用的視窗單位
      selectorBlaskList: [".ignore-"], // 指定不需要轉換爲視窗單位的類
      mediaQuery: false, // 允許在媒體查詢中轉換`px`
      minPixelValue: 1, // 小於或等於`1px`時不轉換爲視窗單位
      replace: true, // 是否直接更換屬性值而不添加備用屬性
      exclude: [], // 忽略某些文件夾下的文件或特定文件
      landscape: false, // 是否添加根據landscapeWidth生成的媒體查詢條件 @media (orientation: landscape)
      landscapeUnit: "vw", // 橫屏時使用的單位
      landscapeWidth: 1134 // 橫屏時使用的視窗寬度
    }
  }
}


後續更新。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章