vue3使用rem适配

vue3使用rem适配

安装
npm i postcss-pxtorem@6.1.0 -D
npm i autoprefixer@10.4.21 -D
新建rem.js
function setRem() {
  let pageWidth = window.innerWidth;
  if (typeof pageWidth != 'number') {
    if (document.compatMode == 'CSS1Compat') {
      pageWidth = document.documentElement.clientWidth;
    } else {
      pageWidth = document.body.clientWidth;
    }
  }
  if (pageWidth <= 750) {
    const baseSize = 75;
    const scale = document.documentElement.clientWidth / pageWidth;
    // 设置页面根节点字体大小
    document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px';
  } else if (pageWidth > 750 && pageWidth <= 1200) {
    const baseSize = 85;
    const scale = document.documentElement.clientWidth / pageWidth;
    // 设置页面根节点字体大小
    document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px';
  } else {
    const baseSize = 100;
    const scale = document.documentElement.clientWidth / 1920;
    document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px';
  }
}
setRem();
window.onresize = function () {
  setRem();
};
main.js 中引入rem.js
 import './utils/rem.js'
项目根目录下新建postcss.config.js
const autoprefixer = require('autoprefixer');
const px2rem = require('postcss-pxtorem');
 
module.exports = {
 plugins: [
 // propList:需要进行转换的css属性的值,*意思是将全部属性单位都进行转换
 px2rem({ rootValue: 100,  exclude: /node_modules/i, propList:['*'] }),
 autoprefixer({}),
  ]
};
vite.conig.js中配置postCssPxToRem
// 引入postCssPxToRem
import postCssPxToRem from 'postcss-pxtorem'
export default defineConfig(({ mode, command }) => {
  return {
    plugins:[
     vue()
    ],
    css: {
      postcss: {
        plugins: [
          postCssPxToRem({
            rootValue: 100, 
            propList: ['*', '!border'], // 除 border 外所有px 转 rem
            selectorBlackList: ['.norem'],
            // 过滤掉norem-开头的class,不进行rem转换
            unitPrecision: 5, // 转换后的精度,即小数点位数
            replace: true, // 是否直接更换属性值而不添加备份属性
            mediaQuery: false, // 是否在媒体查询中也转换px为rem
            minPixelValue: 0,// 设置要转换的最小像素值
          })
        ]
      }
    }
  }
})
重启项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码工人笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值