移动端配置postcss-pxtorem

  1. 安装依赖:postcss-pxtorem 5.1.1
  2. vue2项目 在根目录下新增.postcssrc.js 关键要配置rootValue和propList
module.exports = {
  plugins: [
      'autoprefixer',
      ['postcss-pxtorem', {
        rootValue: 100, // 换算基数 12*100
        unitPrecision: 3, 
        propList: ['*'],
        exclude: /(node_module)/, // 默认false,,过滤/(node_module)/ 。如果想把前端UI框架内的px也转换成rem,就不要过滤
        mediaQuery: false, // (布尔值)允许在媒体查询中转换px。
        minPixelValue: 1 // 设置要替换的最小像素值
      }]
    ]
};

3、在移动端的入口文件配置设置根目录font-size的方法

  • rem 适配方法
// 设备判断
export default function remSize(noRest) {
  let winWidth;
  // 获取窗口宽度
  if (window.innerWidth) {
    winWidth = window.innerWidth;
  } else if ((document.body) && (document.body.clientWidth)) {
    winWidth = document.body.clientWidth;
  }
  // 通过深入Document内部对body进行检测,获取窗口大小
  if (
    document.documentElement
    && document.documentElement.clientHeight
    && document.documentElement.clientWidth
  ) {
    winWidth = document.documentElement.clientWidth;
  }
  // 修改font-size
  const fontSize = ((winWidth / 375) * 100).toFixed(4);
  document.documentElement.style.fontSize = `${fontSize}px`;

  // 适配对font-size额外处理的手机
  const nowFontSize = parseFloat(getComputedStyle(document.documentElement, false)['font-size']).toFixed(4);
  if (noRest !== true && `${nowFontSize}` !== fontSize) {
    document.documentElement.style.fontSize = `${(fontSize * fontSize) / nowFontSize}px`;
  }
}

  • main.js中使用
import remSize from './remSize';

let noReset;

if (window.top === window.self) {
  window.onresize = () => {
    remSize(noReset);
  };

  // 安卓10以上不需要处理修改系统字体大小
  if (判断是否安卓) {
    Vue.prototype.$isAndroid10.getHTTPRequestHeaders().then(({ data = {} }) => {
      const version = data['x-rpc-sys_version'] || '';
      const [v] = version.split('.');
      noReset = Number(v) >= 10;
      remSize(noReset);
    });
  } else {
    remSize(noReset);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值