JS计算rem根字体,配合flex布局实现网页自适应(兼容99%)

本文介绍了一种基于flex和rem的移动端自适应布局方案,通过动态调整根字体大小实现跨平台和跨设备的兼容性,包括具体的计算公式和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在开发移动端中,需要自搭架构,这时候就需要兼容处理

兼容方案我一般移动端方案直接采用flex+rem根字体大小进行动态布局,这样能够初始做到最大程度(99%)兼容各种机型及平台。

rem换算的原理 

           网页根字体 = 100 X (屏幕当前宽度 / 设计稿的宽度)          每一个等分为0.5px,便于计算乘100

document.documentElement.style.fontSize = 100 * (document.documentElement.clientWidth / 750) + 'px';

如果觉得每个都要除100觉得麻烦,也可以使用scss 进行配合使用

scss 动态计算 函数公式

// 宽度计算
@mixin WITD($n){
	width: ($n / 100)+rem; // 假设设计稿带入的宽度为750  计算后的值为7.5rem
}
// 高度计算
@mixin HIGT($n){
	height:($n / 100)+rem; // 假设设计稿带入的高度为750  计算后的值为7.5rem
}

scss的使用方法

.class{
    @include WITD(750);
}

完整处理方案

           利用浏览器window对象的resize事件进行处理,每次改变窗口的大小进行计算根字体

1、闭包处理

// 闭包动态计算rem的写法
(function (doc, win, undefined) {
  var docEl = doc.documentElement,
	resizeEvt = 'orientationchange' in win? 'orientationchange' : 'resize',
	recalc = function () {
	  var clientWidth = docEl.clientWidth;
	  if (clientWidth === undefined) return;
	  docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';  
	};
  if (doc.addEventListener === undefined) return;
  win.addEventListener(resizeEvt, recalc, false);
  doc.addEventListener('DOMContentLoaded', recalc, false)
})(document, window);

2、公用函数方式处理

// 非闭包的写法
function countREM(){
	document.documentElement.style.fontSize = 100 * (document.documentElement.clientWidth / 750) + 'px';  
}
doc.addEventListener('DOMContentLoaded', countREM, false)
window.addEventListener('resize', countREM)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值