推荐看看大漠老师的文章,很是的有收获
如何在Vue项目中使用vw实现移动端适配javascript
npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano --S
module.exports = { "plugins": { "postcss-import": {}, "postcss-url": {}, "postcss-aspect-ratio-mini": {}, "postcss-write-svg": { utf8: false }, "postcss-cssnext": {}, "postcss-px-to-viewport": { viewportWidth: 750, // 容器宽度,也能够看做设计图的宽度 viewportHeight: 1334, // 容器高度,能够不配置 unitPrecision: 3, // px转换为vw后保留的小数位 viewportUnit: 'vw', // px须要转换成的单位,使用vw selectorBlackList: ['.ignore', '.hairlines'], // 不须要转换为其余单位的的class类 minPixelValue: 1, // 小于等于1px不转换 mediaQuery: false // 是否容许在媒体查询中使用px }, "postcss-viewport-units": {}, "cssnano": { preset: "advanced", autoprefixer: false, "postcss-zindex": false } } }
由于在cssnano
中配置了 preset:"advanced"
,因此须要添加一个依赖css
npm i cssnano-preset-advanced --save-dev
由于postcss-viewport-units
会在计算vw时自动添加content
内容,可是content
会有必定的反作用,因此添加一个全局的csshtml
img { content: normal !important; }
在html中引用viewport-units-buggyfill
插件vue
<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>
而后调用viewport-units-buggyfill
java
<script> window.onload = function () { window.viewportUnitsBuggyfill.init({ hacks: window.viewportUnitsBuggyfillHacks }); } </script>