vw 解决方案
1. 安装并配置PostCss插件
npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano --S
2. 对 PostCss 进行配置
找到在根目录中的.postcssrc.js,对PostCSS插件进行配置
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
|
module.exports = {
"plugins"
: {
"postcss-import"
: {},
"postcss-url"
: {},
// to edit target browsers: use "browserslist" field in package.json
"postcss-write-svg"
: {
uft8:
false
},
"postcss-cssnext"
: {},
"postcss-px-to-viewport"
: {
viewportWidth: 750,
// 视窗的宽度,对应的是我们设计稿的宽度,一般是750
viewportHeight: 1334,
// 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置
unitPrecision: 3,
// 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
viewportUnit:
'vw'
,
// 指定需要转换成的视窗单位,建议使用vw
selectorBlackList: [
'.ignore'
,
'.hairlines'
],
// 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
minPixelValue: 1,
// 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
mediaQuery:
false
// 允许在媒体查询中转换`px`
},
"postcss-viewport-units"
: {},
"cssnano"
: {
preset:
"advanced"
,
autoprefixer:
false
,
// 和cssnext同样具有autoprefixer,保留一个
"postcss-zindex"
:
false
}
}
}
|
3. 引入viewport-units-buggyfill解决兼容问题
在 index.html 中引入js
1
2
3
4
5
6
|
<script src=
"//g.alicdn.com/fdilab/lib3rd/viewport-units-buggyfill/0.6.2/??viewport-units-buggyfill.hacks.min.js,viewport-units-buggyfill.min.js"
></script>
<script>
window.onload =
function
() {
window.viewportUnitsBuggyfill.init({ hacks: window.viewportUnitsBuggyfillHacks });
}
</script>
|