📅  最后修改于: 2023-12-03 15:19:48.154000             🧑  作者: Mango
在 CSS 中,我们经常会用到相对长度单位 em 以及 rem,它们类似于像素或者英寸这样的绝对长度单位。但是,em 和 rem 与像素或英寸不同,它们是相对于其他长度单位的,而不是绝对的。
em 是相对于当前元素的字体大小来计算的长度单位。它的值等于当前元素字体大小的倍数。例如,如果一个元素的字体大小为 16px,那么 1em 就是 16px,2em 就是 32px。
.parent {
font-size: 16px;
}
.child {
font-size: 1.5em; /* 1.5em = 24px */
}
在 CSS3 中,引入了一个新的相对长度单位 rem。rem 表示相对于根元素的字体大小来计算的长度单位。根元素是指 <html>
元素,它的默认字体大小通常为 16px。
假设一个根元素的字体大小为 16px,那么 1rem 就等于 16px。如果根元素的字体大小改成了 20px,那么 1rem 就等于 20px。
html {
font-size: 16px;
}
.child {
font-size: 1.5rem; /* 1.5rem = 24px */
}
使用 em 作为长度单位时,其计算方式是相对于父元素的字体大小,因此如果在嵌套的层级结构中,可能会导致使用不当而产生一些没有预期的结果。而使用 rem,可以避免这种问题。
.parent {
font-size: 16px;
}
.child {
font-size: 1.5em; /* 1.5em = 24px,相对于父元素的字体大小 */
}
.grandchild {
font-size: 1.5em; /* 1.5em = 36px,相对于父元素的字体大小 */
}
html {
font-size: 16px;
}
.parent {
font-size: 1.5rem; /* 1.5rem = 24px */
}
.child {
font-size: 1.5rem; /* 1.5rem = 24px */
}
.grandchild {
font-size: 1.5rem; /* 1.5rem = 24px */
}
em 和 rem 都是相对长度单位,它们的区别在于计算方式的不同。em 是相对于父元素的字体大小来计算的,而 rem 是相对于根元素的字体大小来计算的。当需要在一个嵌套的层级结构中使用长度单位时,rem 往往比 em 更可靠。