rem和em的区别

rem和em区别

在介绍两者区别前,先说一下rem具体是什么?有什么含义。

  1. 首先:rem全称(font size of the root element)(根元素的字体大小)
  2. 它是css3新增的尺寸(度量单位),根节点(html)的font-size决定了rem的尺寸单位,也就是所它是一个相对的单位。
  3. rem是一个相对长度单位。相对于父元素的倍数来计算。
  4. 浏览器默认字体大小是16px,1rem就是16px.
  • rem可以应用到什么场景?

可以用来做web app屏幕适配,因为不同手机型号的屏幕大小不同,所以这时候我们就不能用px(固定单位),rem是不同手机屏幕适配的一种方案。

具体演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>rem和em的区别</title>
		<style type="text/css">
			html {
				font-size: 12px;
			}

			.p1{
				font-size: 16px;
			}
			.p2
			{
				font-size: 1.5rem;
			}
		</style>
	</head>
	<body>
		<p class="p1">
			我是文字大小是16px
		</p>
		<p class="p2">
			我是使用rem单位的文字  大小是1.5rem = 1.5 X 12 = 18px
		</p>
	</body>
</html>

在这里插入图片描述

  • 下面在数一下em具体是什么
  1. 首先 em是相对于父元素的字体大小来变化的
    2.跟rem相比em有局限性,因为em只能相对父级文字大小变化,而rem是相对于根元素大小变化的。

具体演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>rem和em的区别</title>
		<style type="text/css">
			.father
			{
				font-size: 16px;
			}
			p
			{
				font-size: 2em;
			}
		</style>
	</head>
	<body>
		<div class="father">
			123
			<p>
				我是子元素,相对父元素大小就是2 X 16 = 32px
			</p>
		</div>
	</body>
</html>

在这里插入图片描述

<think>好的,用户想了解CSSremem单位的区别。首先,我需要回顾这两个单位的基本定义用法。rem是相对于根元素(html)的字体大小,而em则是相对于父元素的字体大小。记得用户可能对相对单位不太熟悉,所以需要从基础讲起。 接下来,要对比两者的差异。比如,在嵌套结构中,em会因为父元素的字体大小变化而层层影响,而rem始终保持相对于根元素的基准。这时候可能需要举例说明,比如父元素字体是16px,子元素用1.5em就会是24px,而用1.5rem则是根据根元素的16px来计算,不管父元素如何变化。 然后,要考虑用户的实际应用场景。比如在响应式设计中,使用rem更容易统一调整整个页面的比例,而em适合组件内部的相对调整。同时,用户可能想知道在不同属性中使用em的情况,比如font-sizepadding使用em时,分别相对于什么,这点需要澄清。 另外,需要提到浏览器默认字体大小通常是16px,但用户可能更改,这时候rem的基准也会变化,而em则依赖于最近的父元素。还要注意可能的问题,比如多层嵌套导致em计算复杂,难以维护,而rem更可控。 最后,结合用户的引用资料,引用[3]提到初学者常用px,但其他单位如remem更有用,可以引用相关内容来支持解释。可能还需要提到normalize.cssborder-box的影响,不过用户的问题主要关于单位,这部分可能关联不大,但如果有时间可以简要提及。 现在需要确保回答结构清晰,分点对比,举例子,并引用相关资料。同时按照用户要求,生成相关问题,比如应用场景、如何选择、浏览器支持等。检查是否所有数学表达式用$...$,但这个问题可能不涉及数学公式,所以可能不需要。但如果有代码示例,需要用正确的格式,比如展示设置根字体大小的CSS代码。</think>### CSSremem单位的区别 #### 1. **定义与基准** - **rem(Root Em)**:基于**根元素(`<html>`)的`font-size`**计算。例如,根元素字体为$16px$,则$1rem = 16px$,$2rem = 32px$。 - **em**:基于**当前元素的父元素`font-size`**计算。例如,父元素字体为$14px$,则$1em = 14px$,$2em = 28px$。 #### 2. **继承特性** - **rem**:始终与根元素绑定,不受嵌套影响。无论元素层级多深,计算值始终一致[^3]。 - **em**:受父元素字体大小影响,嵌套层级越深,计算结果可能逐级叠加。例如: ```css .parent { font-size: 16px; } .child { font-size: 1.2em; } /* 16px × 1.2 = 19.2px */ .grandchild { font-size: 1.2em; } /* 19.2px × 1.2 = 23.04px */ ``` #### 3. **应用场景** - **rem**:适合全局布局控制(如间距、容器尺寸)。通过修改根字体大小,可快速调整整个页面的比例,常用于响应式设计。 - **em**:适合局部组件样式(如按钮内文字与图标的比例)。例如,按钮的`padding`用`em`时,会随按钮字体大小自动缩放。 #### 4. **与其他属性的交互** - 在`font-size`属性中使用时: - `rem`直接依赖根元素。 - `em`依赖父元素的`font-size`。 - 在`width`/`padding`等属性中使用时: - **两者均基于当前元素的`font-size`**。例如: ```css .box { font-size: 10px; padding: 2em; /* 20px */ width: 10rem; /* 160px(假设根字体为16px) */ } ``` #### 5. **兼容性与实践建议** - **兼容性**:两者均被所有现代浏览器支持。 - **推荐用法**: - 使用`rem`定义全局布局,结合媒体查询调整根字体以实现响应式。 - 使用`em`定义组件内部细节(如文本缩进、行高),保持组件内比例稳定。 --- ### 示例代码 ```css /* 设置根字体 */ html { font-size: 16px; } /* 全局布局 */ .container { width: 80rem; } /* 80 × 16px = 1280px */ /* 组件样式 */ .button { font-size: 1em; /* 继承父元素字体 */ padding: 0.5em 1em; /* 根据按钮字体大小自适应 */ } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值