-
Notifications
You must be signed in to change notification settings - Fork 14
(八)处理css3前缀兼容
阿峰 edited this page May 29, 2023
·
2 revisions
虽然css3现在浏览器支持率已经很高了, 但有时候需要兼容一些低版本浏览器,需要给css3加前缀,可以借助插件来自动加前缀, postcss-loader就是来给css3加浏览器前缀的,
- 安装依赖:
npm i postcss-loader autoprefixer -D
- postcss-loader:处理css时自动加前缀
- autoprefixer:决定添加哪些浏览器前缀到css中
- 修改webpack.base.js, 在解析css和less的规则中添加配置
module.exports = {
// ...
module: {
rules: [
// ...
{
test: /.(css|less)$/, //匹配 css和less 文件
use: [
'style-loader',
'css-loader',
// 新增
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: ['autoprefixer']
}
}
},
'less-loader'
]
}
]
},
// ...
}
配置完成后,需要有一份要兼容浏览器的清单,让postcss-loader知道要加哪些浏览器的前缀,
- 在根目录创建 .browserslistrc文件
IE 9 # 兼容IE 9
chrome 35 # 兼容chrome 35
以兼容到ie9和chrome35版本为例,配置好后,执行
npm run build:dev
打包,可以看到打包后的css文件已经加上了ie和谷歌内核的前缀
上面可以看到解析css和less有很多重复配置,可以进行提取postcss-loader配置优化一下
-
postcss.config.js
是postcss-loader
的配置文件,会自动读取配置,根目录新建postcss.config.js:
module.exports = {
plugins: ['autoprefixer']
}
- 修改
webpack.base.js
, 取消postcss-loader
的options
配置
// webpack.base.js
// ...
module.exports = {
// ...
module: {
rules: [
// ...
{
test: /.(css|less)$/, //匹配 css和less 文件
use: [
'style-loader',
'css-loader',
'postcss-loader',
'less-loader'
]
},
]
},
// ...
}
提取postcss-loader配置后,再次打包,可以看到依然可以解析css, less文件, css3对应前缀依然存在。