postcss部分插件小记
现有postcss插件列表:
1.autoprefixer自动补充前缀
- 功能:补全css属性前缀,如transform -> -webkit-transform
1.1 支持浏览器配置
支持浏览器列表:browsers,文档
我的移动端配置:
1 2 3
| 'last 2 versions', 'android 4', 'ios 8'
|
PC端配置:
1
| ['ie 6-8', 'Firefox > 20', 'cover 99.5%']
|
1.2 webpack配置
安装node依赖包postcss-loader,autoprefixer
1
| npm i -D postcss-loader autoprefixer
|
webpack.config.js配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| module.exports = { { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader', { loader: 'postcss-loader', options: { plugins: [ require('autoprefixer')({ browsers: [ 'last 2 versions', 'android 4', 'ios 8' ] }) ] } } ] }, }
|
1.3 vue-cli3配置
vue-cli默认安装autoprefixer,配置项目根目录package.json文件中的browserslist字段。其他配置可见vue-cli3配置文档
如
1 2 3 4 5
| "browserslist": [ "last 2 versions", "android 4", "ios 8" ]
|
1.4 create-react-app配置
同上vue-cli3配置,package.json文件中的browserslist字段
2.postcss-plugin-px2rem px转rem
2.1 配置参数
1 2 3 4 5 6 7 8 9 10 11 12
| { rootValue: 75, //换算基数, 默认100 ,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。 unitPrecision: 4, // 保留小数 exclude: /(node_module)/, //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)/ propWhiteList: [], //默认值是一个空数组,这意味着禁用白名单并启用所有属性。 propBlackList: [], //黑名单 selectorBlackList: [], //要忽略并保留为px的选择器 ignoreIdentifier: false, //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。 replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。 mediaQuery: false, //(布尔值)允许在媒体查询中转换px。 minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0 }
|
2.2 安装依赖
安装node依赖包postcss-loader,postcss-plugin-px2rem
1
| npm i -D postcss-loader postcss-plugin-px2rem
|
2.3 webpack配置
webpack.config.js配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| module.exports = { { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader', { loader: 'postcss-loader', options: { plugins: [ require('postcss-plugin-px2rem')({ rootValue: 75, unitPrecision: 4 }) ] } } ] }, }
|
2.4 vue-cli3配置
修改vue.config.js配置文件,如
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('postcss-plugin-px2rem')({ rootValue: 75, unitPrecision: 4 }), ] } } }, };
|
2.5 create-react-app配置
找到config目录下webpack.config.js(或webpack.config.dev.js),找到postcss-loader配置位置(搜索postcss-loader),添加px2rem配置插件,如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| { loader: require.resolve('postcss-loader'), options: { ident: 'postcss', plugins: () => [ require('postcss-flexbugs-fixes'), require('postcss-preset-env')({ autoprefixer: { flexbox: 'no-2009', }, stage: 3, }), require('postcss-plugin-px2rem')({ rootValue: 75, unitPrecision: 4 }) ], sourceMap: isEnvProduction && shouldUseSourceMap, }, }
|
3.postcss-px-to-viewport px转vw
3.1 配置参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { unitToConvert: 'px', // (String) 需要转换的单位,默认为"px" viewportWidth: 320, // (Number) 设计稿的视口宽度 unitPrecision: 5, // (Number) 单位转换后保留的精度 propList: ['*'], // (Array) 能转化为vw的属性列表 viewportUnit: 'vw', // (String) 希望使用的视口单位 fontViewportUnit: 'vw', // (String) 字体使用的视口单位 selectorBlackList: [], // (Array) 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 minPixelValue: 1, // (Number) 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // (Boolean) 媒体查询里的单位是否需要转换单位 replace: true, // (Boolean) 是否直接更换属性值,而不添加备用属性 exclude: [], // (Array or Regexp) 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件 landscape: false, // (Boolean) 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape) landscapeUnit: 'vw', // (String) 横屏时使用的单位 landscapeWidth: 568 // (Number) 横屏时使用的视口宽度 }
|
3.2 安装依赖
1
| npm i -D postcss-px-to-viewport
|
webpack/vue/react配置方式同上px2rem的配置方式(2.3~2.5),在此不做介绍
Author
My name is Micheal Wayne and this is my blog.
I am a front-end software engineer.
Contact: michealwayne@163.com