What is the value of the css 'ex' unit?

浪尽此生 提交于 2019-11-26 07:59:16

问题


(Not to be confused with Xunit, a popular .Net unit testing library.)

Today in a fit of boredom I started inspecting Gmails DOM (yes, I was very bored).

Everything looked pretty straightforward until I noticed an interesting specification on the widths of certain elements. The illustrious Googlites had specified a number of table cols using the rare \'ex\' unit.

width: 22ex; 

At first I was stumped (\"what\'s an \'ex\'?\"), then it came back to me: I seem to remember something from years ago when first I was learning about CSS. From the CSS3 spec:

[The ex unit is] equal to the used x-height of the first available font. The x-height is so called because it is often equal to the height of the lowercase \"x\". However, an ‘ex’ is defined even for fonts that do not contain an \"x\".

Well and good. But I\'ve never actually seen it used before (much less used it myself). I use ems quite commonly, and appreciate their value, but why the \"ex\"? It seems much less standard a measurement than the em, and far less useful.

One of the few pages I found discussing this topic is Stephen Poley\'s http://www.xs4all.nl/~sbpoley/webmatters/emex.html. Stephen makes good points, however, his discussion seems inconclusive to me.

So my question is: What value does the \'ex\' unit lend to web design?

(This question could be tagged subjective, but I\'ll leave that decision to more experienced SO\'ers than myself.)


回答1:


It is useful when you want to size something in relation to the height of your text's lowercase letters. For example, imagine working on a design like so:


In the typographic dimension of design, the height of letters has important spatial relationships to the rest of the elements. The lines in the source image above are intended to help point out the x-height of the text, but they also show where guidelines would be if designing around that text.

As Jonathan pointed out in the comments, ex is simply the height version of em (width).




回答2:


To answer the question, one use is with superscript and subscript. Example:

sup {     font-size: 75%;     height: 0;     line-height: 0;     position: relative;     vertical-align: baseline;     bottom: 1ex; } 



回答3:


Another thing to consider here is how your page scales when a user ups or downs their font size (perhaps using ctrl+mouse wheel (windows)).

I have used em with.. padding-left: 2 em; padding-right: 2 em;

and ex with padding-bottom: 2 ex; padding-top: 2 ex;

Thus using a vertical unit of measure for a vertically scaling property and a horizontal unit of measure for a horizontally scaling property.




回答4:


The value of having it in the CSS spec, if that's what you're really asking, is exactly the same as the value of having the em unit.

It enables you to set fonts to relative sizes.

You don't know what my base font size is. So one good strategy for web design is to set font sizes which are relative, rather than absolute; the equivalent of "double your normal size" or "a little smaller than your normal size" rather than a fixed size like "ten pixels".




回答5:


Note that, terms like "single/double line spacing" actually mean the offset between two adjacent lines, measured by em. So "double line spacing" means each line has a height of 2 em.

Therefore, if you want to specify a vertical distance that is proportional to "lines", use em. Only use ex if you want the actual height of lowercase letter, which is, I dare say, a much rarer instance.



来源:https://stackoverflow.com/questions/918612/what-is-the-value-of-the-css-ex-unit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!