【vue项目适配可借助于插件lib-flexible 和postcss-px2rem】

前言:vue项目适配可借助于插件lib-flexible 和postcss-px2rem。

lib-flexible插件的作用:根据屏幕尺寸不同设置html根标签的字体大小,1rem即等于根标签的字体大小。

postcss-px2rem插件的作用:将px转为rem,如此以来我们可以在开发的过程中使用px单位。

注意:该插件不适用于行内样式,如使用行内样式,postcss-px2rem 则不能将px转为rem

具体使用方法如下:

一、下包(使用yarn或者npm都可)

1、yarn 命令下包

javascript 复制代码
yarn add lib-flexible postcss-px2rem

2、npm命令下包

javascript 复制代码
npm i lib-flexible postcss-px2rem

二、更改插件配置

1、更改lib-flexible插件的配置

找到node_modules文件夹下的lib-flexible下的flexible.js文件,修改refreshRem 函数

javascript 复制代码
 function refreshRem(){
        var width = docEl.getBoundingClientRect().width;
        if (width / dpr > 540) {
            width = 540* dpr;
        }
        var rem = width / 10;
        docEl.style.fontSize = rem + 'px';
        flexible.rem = win.rem = rem;
    }

改为

javascript 复制代码
 function refreshRem(){
        var width = docEl.getBoundingClientRect().width;
        if (width / dpr > 540) {
            width = width * dpr;//-------------------
        }
        var rem = width / 10;
        docEl.style.fontSize = rem + 'px';
        flexible.rem = win.rem = rem;
    }

2、配置postcss-px2rem

在vue.config.js文件中追加如下代码

javascript 复制代码
const px2rem = require('postcss-px2rem')
const postcss = px2rem({
  remUnit: 192, // 设计稿十等分后的值1rem=192px
  remPrecision: 6 // 转化后小数点位数
})
 
module.exports = {
  css: {
    // PC分辨率端适配
    loaderOptions: {
      css: {},
      postcss: {
        plugins: {
          postcss
        }
      }
    }
  }
}

注意:修改vue.config.js代码需要重启项目

三、重启项目测试

f12控制台检查html标签,当html标签设置了font-size即说明lib-flexible插件生效

检查样式px是否转为rem,如转为rem即生效

ps:在适配过程中,刚开始我的单位px未转化为rem,最后将vue/cli版本从5.0.8降低为4.5.15才生效。

如使用 px2rem-loader 插件适配,采用如下方式配置,则注意px2rem-loader插件配置方式对scss代码并不生效,需为css,不能使用scss

javascript 复制代码
 chainWebpack: config => {
    config.module
      .rule('css')
      .test(/\.css$/)
      .oneOf('vue')
      .resourceQuery(/\?vue/)
      .use('px2rem')
      .loader('px2rem-loader')
      .options({
        remUnit: 192, // 根据视觉稿,rem为px的十分之一,1920px  192 rem
        remPrecision: 8// 换算的rem保留几位小数点
      })
  }

原文链接:https://blog.csdn.net/weixin_45371730/article/details/126404369

相关推荐
小兵张健40 分钟前
价值1000的 AI 工作流:Codex 通用前端协作模式
前端·aigc·ai编程
sunny_1 小时前
面试踩大坑!同一段 Node.js 代码,CJS 和 ESM 的执行顺序居然是反的?!99% 的人都答错了
前端·面试·node.js
拉不动的猪1 小时前
移动端调试工具VConsole初始化时的加载阻塞问题
前端·javascript·微信小程序
ayqy贾杰3 小时前
Agent First Engineering
前端·vue.js·面试
IT_陈寒3 小时前
SpringBoot实战:5个让你的API性能翻倍的隐藏技巧
前端·人工智能·后端
iceiceiceice4 小时前
iOS PDF阅读器段评实现:如何从 PDFSelection 精准还原一个自然段
前端·人工智能·ios
大金乄4 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
葡萄城技术团队5 小时前
【性能优化篇】面对万行数据也不卡顿?揭秘协同服务器的“片段机制 (Fragments)”
前端
程序员阿峰5 小时前
2026前端必备:TensorFlow.js,浏览器里的AI引擎,不写Python也能玩转智能
前端
Jans5 小时前
Shipfe — Rust 写的前端静态部署工具:一条命令上线 + 零停机 + 可回滚 + 自动清理
前端