亮神知识库 亮神知识库
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)

亮神

前程明亮,未来可期
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)
  • 基础

    • 贪婪匹配
    • 数字类型
    • rem原理
      • em 是什么
      • rem 是什么
      • 面试
    • 移动端适配
  • 手写代码

  • JS底层深入

  • CSS

  • 基础
  • 基础
0zcl
2025-06-19
目录

rem原理

# em 是什么

em作为font-size的单位时,其代表父元素的字体font-size大小

em作为其他属性单位时,代表自身字体大小——MDN

  • 优点:比写死px好。改动父元素的字体大小,子元素会等比例变化
  • 缺点:牵一发而动全身,一旦某个节点的字体大小发生变化,那么其后代元素都得重新计算

# rem 是什么

W3C 对 rem 的定义: font-size of the root element。

原理:1 rem 等于 根元素font-seize大小;可以通过lib-flexible监测屏幕大小来线性改变html根结点的font-size,从而实现等比缩放的效果。

# 面试

问:说下rem原理

答:1 rem 等于 根元素font-seize大小;通过lib-flexible监测屏幕大小来线性改变html根结点的font-size,从而实现等比缩放的效果。可以直接在代码写px, 通过px2rem-loader把px转成rem

问:如下,问s1、s2、s5、s6的font-size和line-height分别是多少px,先来想一想,结尾处有答案和解释【css细节的了解程度,】

<div class="p1">
	<div class="s1">1</div>
  	<div class="s2">1</div>
</div>
<div class="p2">
	<div class="s5">1</div>
  	<div class="s6">1</div>
</div>
1
2
3
4
5
6
7
8
.p1 {font-size: 16px; line-height: 32px;}
.s1 {font-size: 2em;}
.s2 {font-size: 2em; line-height: 2em;}

.p2 {font-size: 16px; line-height: 2;}
.s5 {font-size: 2em;}
.s6 {font-size: 2em; line-height: 2em;}
1
2
3
4
5
6
7

答: line-height 为数字,此时行间距:数字 * font-size 第一组的答案

p1:font-size: 16px; line-height: 32px
s1:font-size: 32px; line-height: 32px
s2:font-size: 32px; line-height: 64px 
1
2
3

第二组的答案

p2:font-size: 16px; line-height: 32px
s5:font-size: 32px; line-height: 64px
s6:font-size: 32px; line-height: 64px 
1
2
3
  • p1 无需解释。 font-size: 16px; line-height: 32px;
  • s1 em作为字体单位,相对于父元素字体大小;line-height继承父元素计算值。 font-size: 32px; line-height: 32px;
  • s2 em作为行高单位时,相对于自身字体大小。font-size: 32px; line-height: 64px;
  • p2 line-height: 2自身字体大小的两倍。font-size: 16px; line-height: 32;
  • s5 数字无单位行高,继承原始值,s5的line-height继承的2,自身字体大小的两倍。font-size: 32px; line-height: 64;
  • s6 无需解释。font-size: 32px; line-height: 64;
编辑 (opens new window)
上次更新: 2025/07/17, 07:17:44
数字类型
移动端适配

← 数字类型 移动端适配→

最近更新
01
2024年
07-20
02
2023年
07-20
03
2022年
07-20
更多文章>
Theme by Vdoing | Copyright © 2025-2025 亮神 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式