vue使用rem适配各种分辨率设备

1.首先定义一个函数

export function adapt(win, doc) {
    var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
            var clientWidth = docEl.clientWidth;
            if (!clientWidth) return;
            //这里是假设在750px宽度设计稿的情况下,1rem = 20px;
            //可以根据实际需要修改
            // 3.90625意思是在横屏下 1rem=10px
            docEl.style.fontSize = 10 * 3.90625 * (clientWidth / 750) + 'px';
        };
    if (!doc.addEventListener) return;
    win.addEventListener(resizeEvt, recalc, false);
    doc.addEventListener('DOMContentLoaded', recalc, false);
};

2.引用后,在App.vue里面调用即可

mounted() {
    adapt(window, document);
  },

然后所有页面都可以使用rem为单位了,我的算法是pc端适配竖屏,你可以改改数字,比如docEl.style.fontSize = clientWidth / 1920+ ‘px’,控制1px=1rem,这样转换更方便。

### Vue3 中使用 REM 进行页面适配 #### 1. 创建自定义 REM 配置文件 为了使项目能够根据屏幕尺寸动态调整元素大小,在 `src/util` 文件夹内创建名为 `rem.js` 的配置文件。此文件用于设定基础字号以及计算不同设备上的缩放比例。 ```javascript // src/util/rem.js const baseSize = 16; // 设定基准字体大小为16px function setRem() { let scale = document.documentElement.clientWidth / 1920; document.documentElement.style.fontSize = `${baseSize * Math.min(scale, 2)}px`; } setRem(); // 页面加载时初始化设置REM值 window.addEventListener('resize', setRem); // 监听窗口变化事件并更新REM值[^3] ``` #### 2. 修改 HTML 结构中的样式单位 确保所有的 CSS 定义都采用相对单位(如 em 或 rem),而不是绝对像素(px),以便于跟随根元素(`html`)的 font-size 变化而自动调整组件的实际显示尺寸。 对于大多数情况来说,推荐优先选用 `rem` 单位来代替固定的 px 数值,因为这可以使得整个应用更加灵活地应对不同的屏幕分辨率和方向切换等问题[^4]。 #### 3. 应用到全局样式表 为了让上述逻辑生效,需将其引入项目的入口文件 (通常是 main.ts 或者 app.vue): ```typescript import './assets/styles/global.css'; import '@/utils/rem'; // 导入REM适配脚本 ``` 同时也要记得在全局样式文件中统一转换成基于 `rem` 的设计稿尺寸映射关系,从而保证视觉效果的一致性和可维护性。 通过这种方式可以在不依赖额外插件的情况下轻松完成对多种终端的良好支持,并且保持较高的性能表现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值