CSS em 和 ch 单位有什么区别?
我一直在我的样式表中使用 ch ,但 em 似乎更常见。它们之间有什么区别?
我知道 20ch 将为 20 个零提供足够的空间。我不明白 em 是什么。它是否为 20 M 提供了足够的空间,或者是 20 x 字体大小,即 16 号字体将提供 320,但 320 是什么单位?我不知道它们是几乎相同还是完全不同。
原文由 Paul Taylor 发布,翻译遵循 CC BY-SA 4.0 许可协议
CSS em 和 ch 单位有什么区别?
我一直在我的样式表中使用 ch ,但 em 似乎更常见。它们之间有什么区别?
我知道 20ch 将为 20 个零提供足够的空间。我不明白 em 是什么。它是否为 20 M 提供了足够的空间,或者是 20 x 字体大小,即 16 号字体将提供 320,但 320 是什么单位?我不知道它们是几乎相同还是完全不同。
原文由 Paul Taylor 发布,翻译遵循 CC BY-SA 4.0 许可协议
他们完全不同。
一个 em 等于父元素的字体大小(以像素为单位)。像素字体大小是指字母的 _高度_(以像素为单位)。所以如果你没有改变 HTML 元素的 font-size,大多数东西的默认大小是 16px,所以一个 em 是 16px 高度。 2em 将是 32px 高度,等等。
Rem 比 ems IMO 更容易使用(因为 Rem 单位将始终引用根/HTML 元素的字体大小)。
原文由 Ollie Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答812 阅读✓ 已解决
4 回答872 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答987 阅读✓ 已解决
2 回答2.5k 阅读
2 回答1.5k 阅读
1 回答977 阅读✓ 已解决
我查看了所有答案以及您对它们的评论,我觉得您想使用
em
和ch
单位主要用于width
或height
属性。从我的角度来看,我不建议这样做。
CH-单位
首先,我之前从未与
ch
合作过,老实说,我没有看到它有任何实际用途 - 也许是input
这一年,所以总是有宽度四个数字,但不会更多 - 因为它永远不会准确告诉您元素最终的宽度。我改变了主意,现在我看到了
ch
的真正用途。 :)一年的
input
的示例,因此始终存在四个数字的宽度,将继续存在。但是ch
对于正确定义段落的文本宽度也非常有用。使用像素值、相对值或百分比值非常困难 - 特别是对于响应式设计- 设置每行的完美文本宽度,包括段落的间距。但是,这可能是网站用户体验的责任。 Atlassian Design 的摘要是完美的匹配:
这就是
ch
可以完美地作为一个单元使用的地方。为了更好地查看,您可以查看最后的示例。但现在终于到了
ch
的定义;)正如常说的,
ch
是指0
字符的宽度与其字体大小。例如:正文有一个
font-size: 16px
并且0
字符的宽度是10px
来自所选字体系列,然后1ch
等于10px
。即使这样仍然不准确,因为例如italic
或bold
可以改变字符的宽度。EM- & REM-单位
正如人们常说的那样,
em
- 并让更多玩家加入 - 也rem
与font-size
相关。Where
rem
is always relative to the root elementfont-size
,em
is relative to thefont-size
of the own element or the last parent element (也可以是根元素) 带有font-size
。As
em
example: Only thebody
has afont-size: 16px;
and the element got nofont-size
himself, then1em
等于16px
。如果元素的父元素或元素本身得到font-size: 20px;
,则1em
等于20px
。em
单位也可以自行相乘。As
rem
example: Thebody
has afont-size: 16px;
, then1rem
equals16px
. Even if the element himself or a parent element got afont-size: 20px;
,1rem
still equals to thebody
settings of16px
.em
最初是基于当前字体的排版测量M
字符但已经过时了。正如您现在所看到的,它总是引用“固定起始值”而不是字符的宽度。推荐使用
As I said, from my perspective I would not recommend to use
ch
,em
orrem
forwidth
orheight
属性。这些单位对于“文本”属性更有用。一些例子:
h2
应该是文本的四倍:font-size: 4rem;
p
应该总是有一个margin
半行:margin-bottom: 0.5em;
line-height
应该比font-size
大20%:line-height: 1.2em;
input
对于年份,应该总是有四个数字的width
:width: 4ch;
p
的文本宽度应始终为每行 80 个字符的宽度,包括间距:width: 80ch;
为此,作为结论,我建议您简单地使用百分比
width: 80%;
或视口宽度和视口高度height: 100vh; width: 100vw;
。或者至少总是具有最大值:width: 1000px; max-width: 100%;
。以下是一些片段 - 仅用于
width
属性的示例 - 以便更好地理解:em
- 相对于自身元素的字体大小或最后一个具有字体大小的父元素rem
- 相对于根元素的字体大小ch
- 相对于“0”的宽度(零)