css'ex'单位的价值是多少?

Joe*_*oel 82 css specifications units-of-measurement

(不要与流行的.Net单元测试库Xunit混淆.)

今天厌倦了我开始检查Gmails DOM(是的,我非常无聊).

一切都看起来很简单,直到我注意到某些元素宽度的有趣规范.杰出的Googlites使用罕见的'ex'单位指定了许多表格.

width: 22ex;
Run Code Online (Sandbox Code Playgroud)

起初我很难过("什么是'前'?"),然后它回到了我身上:我似乎记得几年前我第一次学习CSS时的一些东西.从CSS3规范:

[ ex单位 ]等于第一个可用字体的使用x高度.所谓的x高度是因为它通常等于小写"x"的高度.但是,即使对于不包含"x"的字体,也会定义"ex".

好,好.但我以前从未真正看过它(更不用说我自己了).我非常普遍使用ems,并欣赏它们的价值,但为什么是"ex"?它似乎远不如em那么标准,也没那么有用.

我发现讨论这个主题的几个页面之一是Stephen Poley的http://www.xs4all.nl/~sbpoley/webmatters/emex.html.斯蒂芬提出了很好的观点,然而,他的讨论对我来说似乎没有定论.

所以我的问题是:'ex'单元给网页设计带来了什么价值?

(这个问题可能被标记为主观,但我会将这个决定留给比我更有经验的SO'ers.)

Rex*_*x M 113

当您想要根据文本的小写字母的高度调整大小时,它非常有用.例如,想象一下这样的设计:

替代文字


在设计的印刷维度中,字母的高度与其余元素具有重要的空间关系.上面的源图像中的线条旨在帮助指出文本的x高度,但它们还显示了围绕该文本进行设计时的指导原则.

正如Jonathan在评论中指出的那样,ex只是em(宽度)的高度版本.

  • 只是添加,它的高度相当于使用'em'单位的宽度 (25认同)
  • @JonathanFingland @RexM与印刷排版不同,在CSS中,`em`单位[不*测量宽度](http://www.w3.org/WAI/GL/css2em.htm#pgfId=33019) - 它测量字体的**高度**.[`1 em`是计算的`font-size`值](http://www.w3.org/TR/css3-values/#em-unit),[`font-size`指定"所需的高度" of glyphs"](http://www.w3.org/TR/css3-fonts/#font-size-prop).所以'em`和`ex`都测量了一个高度.([`ch`](http://www.w3.org/TR/css3-values/#ch-unit)然而,测量宽度.) (17认同)
  • @Joel给定字体的宽度m和x的高度之间的比率是多少?即使它是固定的,也可能很难计算,因为每个字体在其m和x之间具有不同且任意的比率.因此,在设计应该与类型相关的元素时,您可以依靠x高度来保持比例,而不必自己确定比率. (3认同)
  • 另一个相当深奥的观点是[根据Mozilla](http://kb.mozillazine.org/Em_vs._ex)Gecko可以使用exes比使用ems更准确地缩放项目.em的默认"非样式"大小为10.06667px,而ex的大小为6px.这意味着当缩放ems时,Firefox必须比缩放exes时更频繁地舍入部分像素. (2认同)
  • RexM:我是否建议您简单地将您的答案回滚到您的第一个版本,因为 Rory O'Kane 上面的评论是完全正确的!唯一可以添加的是`em` 和`ex` 是相对于父元素的计算字体大小,或者是parent.parent 等,一直到根元素`html`(到哪个` rem` 单位是相对的),如果未定义,那么我们最终会使用浏览器的默认值(通常为 16px/12pt)*也许*@JonathanFingland 可以删除该评论(不要混淆未来的读者)? (2认同)

jbs*_*jbs 15

要回答这个问题,可以使用上标和下标.例:

sup {
    font-size: 75%;
    height: 0;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
    bottom: 1ex;
}
Run Code Online (Sandbox Code Playgroud)

  • 问题是"'ex'单位给网页设计带来了什么价值?".不是"什么是前单位?" 乔尔在原始问题中很好地定义了一个前单元.我提供了一个如何用它来定位上标的实际例子. (9认同)
  • 不过,我认为这并不能真正帮助解释什么是“前任”。 (2认同)