关于VUE移动端适配rem
此方案是借助两个插件,将px进行转化为rem。
lib-flexible 用于设置 rem 基准值。由淘宝手机前端开发团队编写的。postcss-pxtorem 是一款 postcss 插件,用于将css单位转化为 rem。cnpm install --save lib-flexible
import 'lib-flexible/flexible'
cnpm install --save px2rem-loader
在build/util.js中添加如下配置 附代码:
const px2remLoader = { loader: 'px2rem-loader', options: { remUnit: 75//这个是重点,设计稿是750px } } const loaders = [cssLoader,px2remLoader]cnpm install postcss-pxtorem --save-dev
附代码:
module.exports = { "plugins": { "postcss-import": {}, "postcss-url": {}, // to edit target browsers: use "browserslist" field in package.json "autoprefixer": {}, "postcss-pxtorem": { // 此处为添加部分 rootValue: 100, // 换算基数,默认100,把根标签的font-size规定为1rem为50px,在设计稿上量出多少px直接在代码中写多少px unitPrecision: 5, //保留rem小数点多少位 propList: ['*', '!border', '!font-size'], // 存储将被转换的属性列表,'!font-size' 即不对字体进行rem转换 selectorBlackList: ['.radius'], // 要忽略并保留为px的选择器,例如fs-xl类名,里面有关px的样式将不被转换,支持正则写法。 replace: true, mediaQuery: false,//(布尔值)媒体查询( @media screen 之类的)中不生效 minPixelValue: 12,///设置要替换的最小像素值,px小于12的不会被转换 //propWhiteList: [], //默认值是一个空数组,这意味着禁用白名单并启用所有属性 propBlackList: ['font-size'], //黑名单 } } }新建一个rem.js,切换页面时动态更新html(根标签)的font-size,添加如下代码 附代码:
(function (window, document) { // 设置 rem 函数 function remLayout() { // 获取屏幕宽度 let ww = document.documentElement.clientWidth || document.body.clientWidth; // 限制屏幕宽度 ww = ww > 768 ? 768 : ww; ww = ww <= 320 ? 320 : ww; /* 以设计稿分辨率为基准,取100px为font-size的参照, 75px 那么设计稿的宽如果是750,body元素的宽度就可以设置为width:7.5rem(750/100), 当我们将布局视口设置为375时,于是html的font-size=deviceWidth / 7.5。 */ document.documentElement.style.fontSize = ww / 7.5 + 'px'; } // 初始化 remLayout() // 改变窗口大小时重新设置 rem window.addEventListener('resize', remLayout, false); })(window, document);在main.js中导入rem.js
import './rem.js'附postcss-pxtoremgithub地址:postcss-pxtorem
最后,献上福利 —— JS 常用插件: 下拉刷新、上拉加载,左右滑动,移动端调试,图片预览、放大缩小、旋转.
如有帮助,那就收藏❤❤吧!