一直以来以为 css 自动加浏览器厂商前缀的功能是 vue 的工具提供的, 所以也没怎么注意写兼容性前缀。 最近做另一个页面的时候, 被反馈 flex 布局的地方没有效果。然而在 can i use 上, flex 的兼容已经不错了。这是为什么呢? 首先想到了兼容前缀。打开发布的css文件一看,果然是没有的。 于是立马想到了之前在 vue 项目中看到的一个 webpack 配置 autoprefixer, 以前没有留意过它是做什么的, 现在顾名思义, 应该就是用它来自动补全前缀的吧!
上网搜了下, 的确是这样的。autoprefixer 是 postcss
下的一个模块, 也可以配合 webpack、 sass 一起使用。下面是配置方法:
安装模块依赖
需要安装 postcss, autoprefixer:
npm install --save-dev postcss autoprefixer
写入 webpack 配置文件
配合 sass、ExtractTextPlugin 一并使用, 写入 webpack.config.js:
//webpack.config.js
const autoprefixer = require('autoprefixer')
module.exports = {
...
postcss: [ autoprefixer({
// browsers: ['last 2 versions'] // 这里可以根据需求写兼容的范围
}) ]
module: {
loaders: [
...
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract('style-loader', ['css-loader', 'postcss-loader', 'sass-loader'])
}
]
}
}
关于 loader 的配置, 幸好 github 上有类似的 issue, 否则可能得花时间摸索了…