全局px转rem

移动端开发需要用到rem作为开发单位

第一步

npm install postcss-pxtorem --save-dev //安装postcss-pxtorem

第二步

npm i -S  amfe-flexible

第三步

在main.js中引用

import 'amfe-flexible';
import 'amfe-flexible/index.js'//这个可以不用引入

第四步

在vue.config.js中进行配置

 css: {
        // css预设器配置项
        loaderOptions: {
            postcss: {
                plugins: [
                    require('postcss-pxtorem')({
                        rootValue: 37.5,
                        // 忽略转换正则匹配项,插件会转化所有的样式的px。比如引入了三方UI,也会被转化.
                        //项目中有不需要自动转换成PX的样式,就在此添加,如: .vant  表示 .vant 开头的都不会转换
                        selectorBlackList: ['.tables'],
                        propList: ['*'], //属性的选择器,*表示通用
                        exclude: /douyin-weekend-activity/i,
                    }),
                ],
            },
        },
    },

第五步

在index.html中引入

 <meta
            content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
            name="viewport"
        />

Vue项目中将px换为rem有以下几种方法: ### 全局使用pxrem 若开发时未考虑自适应使用px开发了整个项目,后期有自适应需求且包含style样式的文件较多,可全局使用pxrem,但此方式行内样式中px无法rem。具体步骤如下: 1.vue项目的src文件夹下创建config文件夹,并在其中创建rem.js文件。 2. 将以下代码复制到rem.js中: ```javascript // 基准大小 const baseSize = 16 // 设置 rem 函数 function setRem () { // 当前页面宽度相对于 1920 宽的缩放比例,可根据自己需要修改。 const scale = document.documentElement.clientWidth / 1920 // 设置页面根节点字体大小 document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px' } // 初始化 setRem() // 改变窗口大小时重新设置 rem window.onresize = function () { setRem() } ``` [^1][^5] ### 使用PostCSS插件postcss - pxtorem 为了将px单位自动换为rem,可使用PostCSS插件postcss - pxtorem。首先要确保Vue项目已经配置了PostCSS,若未配置,按以下步骤操作: 1. 安装必要的依赖: ```bash npm install postcss postcss-preset-env postcss-pxtorem --save-dev ``` 2.vue.config.js中进行配置: ```javascript module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('postcss-pxtorem')({ rootValue: 16, // 换算的基数 selectorBlackList: [], // 忽略换正则匹配项 propList: ['*'], }), ] } } } } ``` [^2][^4] ### 新建px2rem.js并在main.js引入 新建px2rem.js文件,并在main.js中引入。px2rem.js文件内容如下: ```javascript // rem等比适配配置文件 const baseSize = 16; function setRem() { const scale = document.documentElement.clientWidth / 1920; document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + "px"; } setRem(); window.onresize = function () { const w = document.documentElement.clientWidth || document.body.clientWidth if(w>1300){ setRem(); } }; ``` [^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值