当然可以,下面是对你提供的文章内容的结构化整理版,方便理解和查阅:
rem 与常用 CSS 单位说明 & 自定义使用方法
1. 常用单位简介
单位 | 含义 | 特点 |
---|---|---|
px | 像素 | 虚拟单位,与显示设备有关,需考虑 DPI(如:Windows 默认 96dpi,Mac 默认 72dpi) |
em | 相对单位 | 相对于当前元素的字体大小,可嵌套,会叠加,常用于局部缩放 |
pt | 磅 | 物理单位,1pt = 1/72 英寸,常用于打印排版 |
rem | 根 em | 相对于 html 根元素的 font-size ,不会嵌套叠加,推荐用于响应式布局 |
2. rem 使用步骤
第一步:设置 viewport
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">
确保页面可正确响应不同设备宽度。
第二步:设置动态 rem 基准
方法一:简单自适应(设计稿为 640px 宽)
<script>
document.documentElement.style.fontSize = document.documentElement.clientWidth / 640 * 100 + 'px';
</script>
方法二:封装成函数并监听窗口变化
<script>
function setRemBase() {
const html = document.documentElement;
html.style.fontSize = (html.clientWidth / 640) * 100 + 'px';
}
window.addEventListener('resize', setRemBase);
window.addEventListener('DOMContentLoaded', setRemBase);
</script>
3. 备注说明
为什么要设置 html
的 font-size
?
因为 rem
是基于 html
的字体大小来计算的,一旦设置好根字体,就可以通过 rem 自动进行全站等比缩放。
为什么要乘以 100?
假设设计稿宽度为 640px:
- 手机设备宽度是 320px,则比例是:
320 / 640 = 0.5
- 若 html 的
font-size = 0.5px
,会低于浏览器的最小字体限制(一般为 12px),可能出现显示异常 - 乘以 100 后,html 的
font-size = 50px
,更符合现实开发需要 - 写样式时,你写的 50px 实际写作
0.5rem
总结:
意思就是,在开发的时候你可以无视设计图和设备的偏差,设计图上是50px,你代码里样式可以直接写50px,效果不受影响,即便是最小的1px也不会出现样式异常,因为1px实际运算以后是50px
。