vue项目rem适配及刷新显示不一致问题解析
vue项目中,使用rem单位结合rem插件(如px2rem-loader)实现自适应布局很常见。然而,页面刷新前后显示效果差异问题时有发生。本文分析一种常见情况及其解决方案。
const px2rem = require('postcss-px2rem'); const postcss = px2rem({ remUnit: 192 //基准大小,需与rem.js一致 }); module.exports = { css: { loaderOptions: { postcss: { plugins: [postcss] } } } };
在main.js中:
import './utils/flexible'; import { setRemInit } from './utils/rem'; setRemInit(); // 初始化
问题表现:页面初次加载显示效果不佳(图略),刷新后效果正常(图略),返回上一页字体又变小。
立即学习“前端免费学习笔记(深入)”;
根本原因:这通常与flexible.js的配合使用有关,flexible.js负责根据屏幕宽度动态设置html的font-size。 然而,flexible.js的执行时机与px2rem-loader的转换时机存在差异,导致初次加载时rem计算不准确。 此外,px2rem/px2vw这类缩放方案并非所有项目都适用。
更佳方案:对于展示型项目或管理后台,建议采用响应式设计,预设不同屏幕尺寸的断点和组件尺寸,并利用CSS栅格布局。这比依赖缩放方案更灵活,也避免了类似问题。 前期投入更多时间设置响应式断点和组件预设,后期维护成本更低,项目稳定性更高。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END