css'ex '単位の値は何ですか?


87

(人気のある.NetユニットテストライブラリであるXunitと混同しないでください。)

今日は退屈でGmailDOMの検査を始めました(はい、とても退屈でした)。

特定の要素の幅に関する興味深い仕様に気付くまで、すべてが非常に単純に見えました。著名なグーグリットは、まれな「ex」ユニットを使用してテーブル列の数を指定していました。

width: 22ex;

最初は困惑しましたが(「ex」とは何ですか?」、それが私に戻ってきました。CSSについて最初に学んだ数年前のことを覚えているようです。CSS3仕様から

[元の単位は]最初に使用可能なフォントの使用済みエックスハイトに等しい。x-heightは、小文字の「x」の高さに等しいことが多いため、このように呼ばれます。ただし、「x」を含まないフォントに対しても「ex」が定義されます。

まあ、良い。しかし、私は実際にそれが以前に使用されたのを見たことがありません(ましてや自分で使用したことはありません)。私はemsを非常に一般的に使用しており、その価値を高く評価していますが、なぜ「ex」なのですか?emよりもはるかに標準的な測定ではなく、はるかに有用性が低いようです。

このトピックについて議論しているのを見つけた数少ないページの1つは、StephenPoleyのhttp://www.xs4all.nl/~sbpoley/webmatters/emex.htmlです。スティーブンは良い点を述べています、しかし、彼の議論は私には決定的ではないようです。

だから私の質問は:「ex」ユニットはウェブデザインにどのような価値をもたらしますか?

(この質問には主観的なタグを付けることができますが、その決定は私よりも経験豊富なSO'erに任せます。)

回答:


124

テキストの小文字の高さに関連して何かのサイズを設定する場合に便利です。たとえば、次のような設計に取り組んでいると想像してください。

代替テキスト


デザインの活版印刷の次元では、文字の高さは残りの要素と重要な空間的関係を持っています。上記のソース画像の線は、テキストのエックスハイトを示すのに役立つことを目的としていますが、そのテキストを中心にデザインする場合のガイドラインの場所も示しています。

ジョナサンがコメントで指摘したように、exは単にem(幅)の高さバージョンです。


29
追加するだけで、これは幅に「em」単位を使用するのと同等の高さです
Jonathan Fingland 2009年

3
@Joel特定のフォントのmの幅とxの高さの比率はどれくらいですか?固定されていても、フォントごとにmとxの比率が異なり、任意であるため、計算が非常に困難になる可能性があります。したがって、タイプに関連する要素を設計する場合、比率を自分で決定する代わりに、x-heightを使用して比率を維持できます。
レックスM

2
もう1つのかなり難解な点は、Mozilla Geckoによると、exeを使用したアイテムはemsを使用したアイテムよりも少し正確にスケーリングできるということです。emのデフォルトの「スタイルなし」サイズは10.06667pxですが、exのサイズは6pxです。つまり、emsをスケーリングする場合、Firefoxはexeをスケーリングする場合よりも頻繁に部分ピクセルを丸める必要があります。
benrifkah 2011年

1
一般的には正しくありませんが、2exが1emとほぼ同じサイズであると想像するのは妥当です(ただし、大文字の高さは通常1emよりやや低くなります)。CSS仕様には、「x-heightを決定することが不可能または非現実的である場合、0.5emの値を想定する必要がある」とさえ記載されています。
natevw 2013

20
@JonathanFingland @RexM印刷タイポグラフィとは異なり、CSSでは、em単位は幅を測定せ、フォントの高さを測定します。1 emは計算font-sizeであり、font-size「希望するグリフの高さ」指定します。だから両方emex高さを測定します。(chただし、幅は測定されます。)
Rory O'Kane 2013

19

質問に答えるには、上付き文字と下付き文字を使用します。例:

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

1
しかし、それが「元」とは何かを説明するのに本当に役立つとは思いません。
duskwuff -inactive- 2014

11
問題は、「「ex」ユニットはWebデザインにどのような価値をもたらすのか」です。「元ユニットとは」ではありません。Joelは、元の質問で元ユニットを定義するのに非常に優れた仕事をしています。上付き文字を配置するためにそれを使用する方法の実際的な例を提供します。
jbs 2014

1
質問に直接答える良い実用的な例。よくやった。
バジルバーク2014年

2

ここで考慮すべきもう1つのことは、ユーザーがフォントサイズを拡大または縮小したときにページがどのように拡大縮小するかです(おそらく、Ctrl +マウスホイール(Windows)を使用)。

私はemを..padding-leftで使用しました:2 em; パディング-右:2 em;

とパディングボトム付きの例:2例; パディングトップ:2 ex;

したがって、垂直方向のスケーリングプロパティには垂直方向の測定単位を使用し、水平方向にスケーリングするプロパティには水平方向の測定単位を使用します。


5
emとexは、それぞれ大文字の「M」と小文字の「x」のさとして定義されているため、垂直単位です。それらは両方とも垂直および水平の長さに使用できます。
JacquesB 2015年

これに追加するのchは、ゼロの数字( "0")の幅を測定する水平単位です。
マットF.

1

CSS仕様でそれを持つが、それはあなたが本当に求めているものだ場合、全角単位を有するの値と全く同じです。

フォントを相対的なサイズに設定できます。

私の基本フォントサイズがわからない。したがって、Webデザインの優れた戦略の1つは、絶対的なフォントサイズではなく相対的なフォントサイズを設定することです。「10ピクセル」のような固定サイズではなく、「通常の2倍のサイズ」または「通常のサイズより少し小さい」に相当します。


私はこれに同意する。しかし、em仕様はこれに十分であり、より信頼性がありませんか?
ジョエル

@JoelPotterはい、ただし幅のみ。高さについてはex、同等のようです。
ANevesは、SEは悪だと考えています

5
@ANeves不正解。CSSでは、emはフォントの高さ(概算)であり、ではありません。印刷のタイポグラフィでは、emのアイデアは大文字の幅から来ましたM。しかし、CSSは洗練されていemます。ウィキペディアを参照してください。
バジルバーク2014年

2
幅が必要な場合はch、別の回答に記載されている単位を使用してください。
バジルバーク2014年

1

「シングル/ダブルライン間隔」などの用語は、実際には、emで測定された2つの隣接するライン間のオフセットを意味することに注意してください。したがって、「二重行間隔」とは、各行の高さが2emであることを意味します。

したがって、「線」に比例する垂直距離を指定する場合は、emを使用します。小文字の実際の高さが必要な場合にのみexを使用します。これは、あえて言うと、はるかにまれなインスタンスです。

更新:Web標準では、ブラウザーは0.5emをexとして使用するか、フォントから派生させることができます。

ただし、「x-height」情報をフォント(OpenTypeまたはwebfont)に確実に埋め込む方法はありません。

したがって、前者の可能性は元ユニットを冗長にし、後者は発生するための信頼できる手段を欠いています。そして、どちらかが可能であるという事実は、それをさらに信頼性の低いものにします。

したがって、私は元ユニットの価値の欠如を主張します。


この質問は、その意味ではなく、その価値を具体的に求めています。
マットF.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.