Vue怎么实现rem
Vue 中实现 rem 适配的方案
在 Vue 项目中实现 rem 适配,可以通过动态设置根元素的字体大小并结合 CSS 预处理器或 PostCSS 插件来自动转换像素单位。以下是具体实现方法:
安装 postcss-pxtorem 插件
通过 npm 或 yarn 安装 postcss-pxtorem,该插件用于将 px 单位自动转换为 rem:

npm install postcss-pxtorem -D
配置 postcss.config.js
在项目根目录创建或修改 postcss.config.js 文件,添加以下配置:
module.exports = {
plugins: {
'postcss-pxtorem': {
rootValue: 16, // 基准值,1rem = 16px
propList: ['*'], // 转换所有属性
selectorBlackList: [], // 忽略的选择器
minPixelValue: 2 // 最小转换像素值
}
}
}
动态设置根字体大小
在项目的入口文件(如 main.js)中,添加以下代码动态计算根元素的 font-size:

function setRem() {
const baseSize = 16 // 设计稿基准值(1rem = 16px)
const scale = document.documentElement.clientWidth / 1920 // 假设设计稿宽度为1920px
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
setRem()
window.addEventListener('resize', setRem)
使用 rem 单位编写样式
在 Vue 单文件组件的 <style> 标签中直接使用 px 单位,postcss-pxtorem 会自动转换为 rem:
.container {
width: 100px; /* 会自动转换为 6.25rem (100/16) */
}
可选:使用 SCSS/Less 变量
通过预处理器变量简化 rem 计算(需安装对应的预处理器):
@function px2rem($px) {
@return ($px / 16) + rem;
}
.box {
width: px2rem(100); // 手动转换为 rem
}
注意事项
- 设计稿尺寸通常以 1920px 或 750px 为基准,需根据实际项目调整
rootValue和计算比例。 - 移动端项目可配合
lib-flexible库实现更精细的适配。 - 行内样式不会被 postcss-pxtorem 转换,需手动计算或使用 JavaScript 动态设置。






