1.在css样式兼容性方面,我们可以使用autoprefixer插件

1
2
3
postcss可以被理解为一个平台,可以让一些插件在上面跑。它提供了一个解析器,可以将CSS解析成抽象语法树。通过PostCSS这个平台,我们能够开发一些插件,来处理CSS。热门插件如autoprefixer。

vue-cli已经自动集成了postcss,所以我们可以在postcss.config.js这个配置文件中直接添加autoprefixer这个插件

2.在屏幕大小适配方面,我们可以使用下面两种方案

(1)使用flexible和 postcss-px2rem
之前使用rem适配的思路:使用媒体查询,确定不同屏幕下html标签的font-size  (即1rem单位),然后在写css样式的时候,就可以使用1rem , 2rem这样的单位来做适配了。

但是这种适配的问题是需要手动把px单位换算成rem单位,比较麻烦。对应的,我们可以使用flexible和 postcss-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
//1.安装flexible。 flexible主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题
npm install lib-flexible --save

//2.main.js引入flexible
import 'lib-flexible'

//此时运行程序会看到html中自动加上了font-size font-size的默认值为viewport的十分之一
//在页面中引入flexible.js后,flexible会在<html>标签上增加一个data-dpr属性和font-size样式(如下图)。

//3.安装postcss-pxtorem
npm install postcss-pxtorem --save-dev

//4.修改postcss.config.js
module.exports = {
plugins: {
//autoprefixer 自动补全css前缀的东西
'autoprefixer': {
//兼容的机型
browsers: ['Android >= 4.0', 'iOS >= 7']
},
'postcss-pxtorem': {
rootValue: 37.5, //换算基数,一般和html的font-size一致
propList: ['*'] //哪些css属性需要换算
}
}
};
(2) 使用postcss-px-to-viewport
`vw` 与 `vh`单位,以`viewport`为基准,`1vw` 与 `1vh`分别为`window.innerWidth` 与 `window.innerHeight`的百分之一。

vw/vh 单位其实出现比较早了,只是以前支持性不太好,现在随着浏览器的发展,大部分(92%以上)的浏览器已经支持了vw/vh
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
28
29
30
npm i postcss-px-to-viewport -save -dev

//修改postcss.config.js
module.exports = {
plugins: {
autoprefixer: {
//兼容的机型
browsers: ['Android >= 4.0', 'iOS >= 7']
},
//px转换为vw单位的插件
"postcss-px-to-viewport": {
//1vw = 3.2
viewportWidth: 320,
//1vh = 5.68
viewportHeight: 568,
// px to vw无法整除时,保留几位小数
unitPrecision: 5,
// 转换成vw单位
viewportUnit: 'vw',
//不转换的类名
selectorBlackList: [],
// 小于1px不转换
minPixelValue: 1,
//允许媒体查询中转换
mediaQuery: false,
//排除node_modules文件中第三方css文件
exclude: /(\/|\\)(node_modules)(\/|\\)/
},
}
};

####