TL;DR:を使用しますpx
。
事実
まず、仕様ごとに、CSSpx
単位は1 つの物理ディスプレイ ピクセルと等しくないことを知っておくことが非常に重要です。これは、1996 年のCSS 1 仕様でも常に当てはまります。
CSS は、96 dpi ディスプレイ上のピクセルのサイズを測定する参照ピクセルを定義します。96dpi とは大幅に異なる dpi を持つディスプレイ (Retina ディスプレイなど) では、ユーザー エージェントはpx
単位を再スケーリングして、そのサイズが参照ピクセルのサイズと一致するようにします。つまり、この再スケーリングこそが、1 つの CSS ピクセルが 2 つの物理的な Retina ディスプレイ ピクセルに等しい理由です。
とはいえ、2010 年まで (そしてモバイル ズームの状況にもかかわらず)、px
広く利用されているディスプレイはすべて 96 dpi 前後だったため、ほぼ常に 1 物理ピクセルに相当していました。
s で指定されたサイズは、親要素にem
相対的です。これは、ネストされた要素が次第に大きくなったり小さくなったりする の「複合問題」につながります。例えば:em
body { font-size:20px; }
div { font-size:0.5em; }
私たちに与えます:
<body> - 20px
<div> - 10px
<div> - 5px
<div> - 2.5px
<div> - 1.25px
常にルート要素rem
のみに関連するCSS3は、現在使用中の全ブラウザの 99.67% でサポートされています。html
意見
誰にでも優しく、目の不自由な人にも配慮したページ設計が良いというのは、誰もが認めるところだと思います。そのような考慮事項の 1 つ (ただし、それだけではありません!) は、ユーザーがサイトのテキストを大きくして読みやすくすることを許可することです。
当初、ユーザーにテキスト サイズをスケーリングする方法を提供する唯一の方法は、相対的なサイズ単位 ( em
s など) を使用することでした。これは、ブラウザのフォント サイズ メニューが単純にルート フォント サイズを変更したためです。したがって、 でフォント サイズを指定しpx
た場合、ブラウザのフォント サイズ オプションを変更しても、サイズは変更されません。
最新のブラウザー (およびそれほど最新ではない IE7 でさえも) はすべて、デフォルトのスケーリング方法を変更して、画像やボックス サイズを含むすべてのものを単純に拡大するようにしました。基本的に、それらは参照ピクセルを大きくしたり小さくしたりします。
はい、ブラウザのデフォルトのスタイルシートを変更してデフォルトのフォント サイズを微調整することもできますが (古いスタイルのフォント サイズ オプションと同等)、それは非常に難解な方法であり、私は誰もそれをしないと思います。(Chrome では、詳細設定、Web コンテンツ、フォント サイズの下に埋もれています。IE9 では、さらに隠されています。Alt を押して、[表示]、[テキスト サイズ] に移動する必要があります。)ブラウザのメイン メニュー (またはCtrl+ +/ -/ マウス ホイールを使用)。
1 - 当然、統計誤差の範囲内
ほとんどのユーザーがズーム オプションを使用してページをスケーリングすると仮定すると、相対単位はほとんど無関係であることがわかります。すべてが同じ単位で指定されている場合 (画像はすべてピクセル単位で処理されます)、ページの開発がはるかに簡単になり、複合について心配する必要がなくなります。( 「数学はないと言われました」 - 1.5em が実際にどのように機能するかを計算しなければならないことに対処しています。)
フォント サイズに相対単位のみを使用する場合のもう 1 つの潜在的な問題は、ユーザーがサイズ変更したフォントによって、レイアウトの想定が崩れる可能性があることです。たとえば、テキストが途切れたり、長くなりすぎたりする可能性があります。絶対単位を使用すると、予期しないフォント サイズによってレイアウトが崩れる心配はありません。
したがって、私の答えはピクセル単位を使用することです。私はすべてに使用px
します。もちろん、状況はさまざまです。IE6 をサポートする必要がある場合 (RFC の神々があなたを慈悲してくれることを願っています)、em
とにかく s を使用する必要があります。