rem自适应相关杂谈

本文探讨了rem作为自适应界面设置的关键,解释了rem基于document的font-size工作原理,如何通过JavaScript动态调整html的font-size,实现界面大小的自适应。同时讨论了min-width、min-height与内容的关系,以及在Highcharts中的应用和高度自适应策略。

今天收获:
1、解决rem的概念问题
所谓rem,通常是根据document 也就是window 刚开始设置的字体大小确定的 比如:
这里写图片描述
html中的font-size被设置成了16px,那么此时1rem=16px;即使此时在.one标签中再次设置font-size的值,也只会根据初始的(全局的)也就是html中的值进行变化,如果更改了html的值,rem随之变化,这种形式通常被用来设置自适应大小的界面。通过对高宽大小的设置(使用rem为单位),就可以只改变html中font-size的值,改变所有使用rem的变量。
document.documentElement是DOM操作中不需要寻找就可以获得的变量,它指的是html.
document.documentElement.style.fontSize=”?”这样就通过js完成了对font-size的设置,此时设置的是一个定值 ? 可以通过document.documentElement.clientWidth来获取当前页面的宽度,大多数通过对当前宽度除以一定的数值来获取一个随页面宽度变化的定值,这个一定的数值可以自己设置(自己觉得好用就好 个人观点 取一个好整除的),方便自己调用设置各种类型的长宽高。同理,也可以获取当前页面高度
document.documentElement.clientHeight。
min-width和min-height:只是设置最小的值,在极限情况下加以限制,他们的大小通常由内容撑开。css属性中的auto也是由内容撑开的。ex 设置min-width为20px,不够20=20,大于20就是内容的大小。
highcharts中 min-width的设置 他会自适应屏幕宽度,(除非最小值到极限),但是min-height则是会最低配置,直接就是最小值,毕竟不可能无限长。所以hightcharts中的自适应高度不能使用min-height,尽量使用rem定义高。也可以使用比例运算,比如:
var 变量=document.documentElement.clientHeight/(font-szie的值)*百分比+’rem’
$().css(“height”,变量);

### REM 自适应布局实现方案 REM 是一种基于根字体大小(`html` 或 `root` 的字体大小)来设置其他元素尺寸的单位。通过动态调整根字体大小,可以轻松实现页面在不同设备上的自适应效果。 #### 动态计算根字体大小 为了使页面能够根据不同屏幕宽度自动调整比例,通常会利用 JavaScript 来动态修改 HTML 元素的字体大小。以下是常见的实现方法: ```javascript function setRemUnit() { const html = document.documentElement; const width = html.clientWidth; // 获取视口宽度 const rem = (width / 10); // 假设设计稿宽为750px,则每1rem等于75px html.style.fontSize = `${rem}px`; // 设置HTML的font-size } setRemUnit(); // 初始化 window.addEventListener('resize', setRemUnit); // 当窗口改变时重新计算 ``` 上述代码的核心逻辑在于将视窗宽度映射到根字体大小上[^3]。这样,所有的子元素都可以按照这个基础单位进行缩放。 #### 使用媒体查询辅助 尽管 REM 可以很好地解决大部分问题,但在某些特殊场景下可能还需要配合 CSS 媒体查询进一步微调样式: ```css /* 默认情况 */ body { font-size: 16px; } @media screen and (max-width: 768px){ body{ font-size: 14px; } } ``` 这种做法可以在特定断点处强制应用不同的视觉表现[^2]。 #### 结合Flexbox/Grid增强体验 现代前端开发中推荐结合 Flexbox 和 Grid Layout 技术共同构建灵活且强大的布局体系。这些技术可以帮助开发者更高效地管理复杂结构下的间距、排列等问题[^4]。 --- ### 注意事项 - **性能考虑**: 频繁触发重绘可能会带来性能开销,在实际项目里需谨慎处理 resize 事件频率。 - **兼容性测试**: 虽然主流浏览器均支持 REM 单位,但仍建议针对目标受众群体做充分验证[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值