大漠老师的文章查看
使用vue-cli新建项目
1 2 3
| vue init webpack vue-demo cd vue-demo npm run dev
|
安装依赖
1
| npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano cssnano-preset-advanced --S
|
postcssrc.js配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| module.exports = { "plugins": { "postcss-import": {}, "postcss-url": {}, "postcss-aspect-ratio-mini": {}, "postcss-write-svg": { utf8: false }, "postcss-cssnext": {}, "postcss-px-to-viewport": { viewportWidth: 750, unitPrecision: 3, viewportUnit: 'vw', selectorBlackList: ['.ignore', '.hairlines'], minPixelValue: 1, mediaQuery: false }, "postcss-viewport-units": {}, "cssnano": { preset: "advanced", autoprefixer: false, "postcss-zindex": false } } }
|
各插件的功能:
1 2 3 4 5 6 7 8 9
| "postcss-px-to-viewport": { viewportWidth: 750, viewportHeight: 1334, unitPrecision: 3, viewportUnit: 'vw', selectorBlackList: ['.ignore', '.hairlines'], minPixelValue: 1, mediaQuery: false }
|
postcss-px-to-viewport文档
postcss-write-svg 实现Retina屏1像素边框
首先记得在heade头加入
1
| <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
|
最重要的 降级处理
使用 Viewport Units Buggyfill 插件
1
| <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>
|
在Index.html文件body标签后添加以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <script> window.onload = function () { window.viewportUnitsBuggyfill.init({ hacks: window.viewportUnitsBuggyfillHacks }); } </script>
|
最后做个对img兼容处理,在全局添加(在main.js 用 Import ‘@/common/index.css’)
1 2 3
| img { content: normal !important; }
|
如果不想用css来处理img兼容,可以使用过滤将其过滤掉具体在 postcssrc.js 中配置规则
1 2 3 4 5 6 7 8 9 10
| "postcss-viewport-units": { filterRule: rule => rule.selector.indexOf("::after") === -1 && rule.selector.indexOf("::before") === -1 && rule.selector.indexOf(":after") === -1 && rule.selector.indexOf(":before") === -1 && rule.selector.indexOf("img") === -1 },
|
同时要使用scss需要安装 node-scss 和 sass-loader
1
| npm install sass-loader node-sass --save-dev
|