前言

之前处理了JS的兼容问题,将高级语言转换成浏览器能识别的语言,同样的,在不同的浏览器,甚至不同版本的浏览器的之间样式也会存在兼容性的问题,现在我们就来解决样式的兼容性问题。

webpack中提供了一个loader来解决:postcss-loader 1、下载依赖,postcss-loader依赖于postcss,postcss-loader需要使用postcss-preset-env来进行智能预设,决定样式如何进行兼容。

npm install --save-dev postcss-loader postcss postcss-preset-env

2、基本使用,postcss-loader需要在css-loader的下一层,less-loader和scss-loader的上一层,顺序不能弄错。因为样式配置有好几个,代码重复比较多,抽出来减少代码量。

// 封装一个样式loader处理的方法,减少重复性代码

const getCssLoader=function(prePaser){

return [

MiniCssExtractPlugin.loader,

'css-loader',

// 如果默认配置就可以直接写loader就可以了,但是需要配置的就要写成对象形式

// 在options中写想要的配置

{

loader: 'postcss-loader',

options: {

postcssOptions: {

plugins: [

[

'postcss-preset-env',//这个就能解决大多数样式兼容性问题

],

],

},

}

},

prePaser,

].filter(Boolean);//[].filter(Boolean)方法,过滤掉undefined,空字符串等为false的数据

}

几个样式的rules配置

{

test: /\.css$/,//匹配.css后缀名字的文件

use: getCssLoader(),

},

{

test: /\.less$/,

use: getCssLoader('less-loader'),

},

{

test: /\.s[ca]ss$/,

use: getCssLoader('sass-loader'),

},

1)没有配置样式兼容时,使用8位数表示背景颜色加透明度,无法转成ragb

2)配置后

要想具体设置兼容的参数,在package.json中添加,下面的配置取得是交集。

"browsersList": [

"last 2 version",//兼容浏览器最新两个版本

">1%",//兼容99%的浏览器

"not dead",//标记已死的浏览器不要

]

压缩css代码

之前单独打包的css代码是没有经过压缩的,要是生产环境,压缩的代码可以减少资源的使用,减少加载的时间。

webapck提供了插件CssMinimizerWebpackPlugin 下载依赖:

npm install css-minimizer-webpack-plugin --save-dev

引入插件:

const cssMinimizerWebpackPlugin = require('css-minimizer-webpack-plugin');//引入压缩css的插件

在plugins中配置插件:

new cssMinimizerWebpackPlugin(),

打包生产后的代码就是压缩过的:

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。