この例では:
CSS
h1 { font-size: 2em; }
.smaller { font-size: 0.5em; }
HTML
<h1>Hi, I am a <span class="smaller">toad</span></h1>
「toad」という単語は、16px (ブラウザの標準フォント サイズ) の 0.5 倍になりますか、それとも 2em (h1 のフォント サイズ) の 0.5 倍になりますか?
この例では:
CSS
h1 { font-size: 2em; }
.smaller { font-size: 0.5em; }
HTML
<h1>Hi, I am a <span class="smaller">toad</span></h1>
「toad」という単語は、16px (ブラウザの標準フォント サイズ) の 0.5 倍になりますか、それとも 2em (h1 のフォント サイズ) の 0.5 倍になりますか?
これは、それが使用されている要素の「font-size」プロパティの計算値と同じです。継承はドキュメント ツリーを下って実行されます。
あなたの質問に答えると、2em の 0.5 倍になり、h1 の親の計算された font-size の 2 倍になります。ふぅ。
em
またはなどの他の CSS プロパティで使用する場合、結果は、width
またはなどを適用する要素height
の計算結果から計算されることに注意することも重要です。font-size
width
height
次の記事ではem
、私の意見では、ユニットの使用とコンテキストについて、他の読み物やリソースと一緒に説明しています...rem
ユニットも多少興味があるかもしれません。
このフィドルをチェックして、それがどのように機能するかを少し明確にすることもできます。
em
単位font-size
は、親要素のフォント サイズを示すプロパティの値で使用される場合を除き、要素のフォントサイズを示します。この意味で、提示されたケースでは、コンテキストは親要素です。
この場合、「toad」という単語のフォント サイズは、親のフォント サイズと同じになりh1
ます。与えられたデータから特定の値を推測することはできません。
フォント サイズが計算さh1
れると、この構造体が処理されるときに の親のフォント サイズが計算されます。sとしましょう。最初に のフォント サイズh1
が計算され、s (親のフォント サイズ) に 2 が掛けられます。次に、span
要素のフォント サイズが計算され、その親のフォント サイズに 0.5 が掛けられ、sが得られます。理論的には、丸め誤差はこのようなプロセスで最小の偏差を引き起こす可能性がありますが、コンピューターでは 2 と 0.5 の乗算は正確であると想定できます。
コンテキスト内の h1 要素の 2em の 0.5 倍になります。
強制的に 16px を基準にするには、最初に h1 の親を font-size 16px に設定する必要があります。
.wrapper{font-size:16px;} h1 { font-size: 2em; } .smaller { font-size: 0.5em; }
<div class="wrapper"><h1>Hi, I am a <span class="smaller">toad</span></h1></div>
SO この場合、
em は、現在のフォントの M 文字の高さに名目上基づいているコンテキストからの相対的な尺度であることに注意してください。すべてのインテントで、h1 のサイズは 32px で、span.smaller のサイズは 16px です。
親要素のピクセル サイズによって異なります。親要素のピクセル サイズが 16px の場合
.5em
はベース ピクセルの半分に等しいので8px
、2em
h1 は に等しくなり32px
ます。
それはすべて、CSS で親要素のピクセル サイズをどのように設定したかによって異なります。