2018年1月25日 11:58:01 最新的大漠老师移动端适配方案,
使用这套方案能够取代flexible.js
首先建议读者先去学习大漠老师的这篇文章,看完能有大大的收获css
使用vue-cli新建项目html
vue init webpack vue-demo cd vue-demo npm run dev
安装依赖vue
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配置webpack
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 } } }
postcss-px-to-viewport : 将项目中的px转化为vwgit
"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-px-to-viewport文档github
postcss-write-svg 实现Retina屏1像素边框
首先记得在heade头加入
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />web
方式一:vue-cli
方式二:npm
最重要的 降级处理
使用 Viewport Units Buggyfill 插件
在vue项目的index.html文件head标签添加引用
``<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标签后添加如下代码svg
<script> // vw兼容性处理viewport-units-buggyfill window.onload = function () { window.viewportUnitsBuggyfill.init({ hacks: window.viewportUnitsBuggyfillHacks }); //如下代码用户测试 // var winDPI = window.devicePixelRatio; // var uAgent = window.navigator.userAgent; // var screenHeight = window.screen.height; // var screenWidth = window.screen.width; // var winWidth = window.innerWidth; // var winHeight = window.innerHeight; // console.log("Windows DPI:" + winDPI + ";\ruAgent:" + uAgent + ";\rScreen Width:" + // screenWidth + ";\rScreen Height:" + screenHeight + ";\rWindow Width:" + winWidth + // ";\rWindow Height:" + winHeight) } </script>
最后作个对img兼容处理,在全局添加(在main.js 用 Import '@/common/index.css')
img { content: normal !important; }