Vue-移动端适配rem、vw、vh

一、移动端适配rem

1、安装lib-flexible

npm i lib-flexible --save

2、在main.js引入lib-flexible

// main.js
import 'lib-flexible/flexible'

3、安装postcss和postcss-pxtorem

npm install postcss postcss-pxtorem --save-dev

4、配置postcss-pxtorem

        在根目录下的.postcssrc.js文件中修改为以下示例,若没有该文件则手动添加:

// .postcssrc.js
module.exports = {
    plugins: {
        "autoprefixer": {},
        "postcss-pxtorem": {
            rootValue: 37.5,
            propList: ['*']
        }
    }
}

5、其他设计稿尺寸

        如果设计稿的尺寸不是 375,而是 750 或其他大小:

module.exports = {
    plugins: {
        "autoprefixer": {},
        "postcss-pxtorem": { 
            rootValue({ file }) {
                return file.indexOf('vant') !== -1 ? 37.5 : 75;
            },
            propList: ['*']
        }
    }
}

6、postcss-pxtorem参数说明

module.exports = {
    plugins: {
        "autoprefixer": {},
        "postcss-pxtorem": {
            rootValue: 100,  // 换算基数,默认100,规定根节点的font-size为1rem=100px,在设计稿上量出多少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'], // 黑名单
        }
    }
}

7、针对ipad 和 ipad pro 设备无效

        在index.html中添加如下代码:

<script>
    /(pad|pod|iPad|iPod|iOS)/i.test(navigator.userAgent)&&(head=document.getElementsByTagName('head'),viewport=document.createElement('meta'),viewport.name='viewport',viewport.content='target-densitydpi=device-dpi, width=480px, user-scalable=no',head.length>0&&head[head.length-1].appendChild(viewport));
</script>

二、移动端适配vw、vh

1、安装postcss-px-to-viewport

npm install postcss-px-to-viewport --save-dev

2、配置postcss-px-to-viewport

        在根目录下的.postcssrc.js文件中修改为以下示例,若没有该文件则手动添加:

// .postcssrc.js
module.exports = {
    plugins: {
        'postcss-px-to-viewport': {
            viewportWidth: 375,
        },
    },
};
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值