[解決済み] CSSの単位はpxとremのどちらを使うべきですか?[クローズド]
質問
新しいウェブサイトをデザインしているのですが、できるだけ多くのブラウザやブラウザ設定に対応させたいと思っています。フォントや要素のサイズに使用する単位を決めかねているのですが、決定的な答えが見当たりません。
質問です。
px
または
rem
をCSSに追加することはできますか?
-
これまでのところ、私が知っているのは
px
は、ブラウザでベースのフォントサイズを調整するユーザーと互換性がありません。 -
を無視した
em
と比較して、メンテナンスが面倒だからです。rem
のように、カスケードするためです。 -
という意見もあります。
rem
は解像度に依存しないので、より望ましい。しかし、ほとんどのモダンブラウザはすべての要素を等しく拡大するのでpx
は問題ない。
CSSで距離を測るのに何が一番望ましいか、いろいろな意見があり、どれが一番いいのか分からないので質問させていただきました。
どのように解決するのですか?
TL;DR。
使用
px
.
事実関係
-
まず、極めて重要なこととして 仕様につき は、CSSの
px
ユニット はありません。 は、物理的なディスプレイの1画素に相当します。 これには 常に 1996年当時もそうでした。 CSS 1仕様 .CSSでは 参照ピクセル これは、96 dpiのディスプレイにおけるピクセルの大きさを測定するものです。 96dpiと大きく異なるdpiを持つディスプレイ(Retinaディスプレイなど)では、ユーザーエージェントが
px
の単位で、参照画素と同じ大きさになるようにします。 つまり、CSSの1ピクセルがRetinaディスプレイの物理的な2ピクセルに相当するのは、この再スケーリングのためなのです。とはいえ、2010年までは(モバイルのズーム事情はともかくとして)、このように
px
広く普及しているディスプレイはすべて96dpi程度だったため、ほぼ常に1物理ピクセルに相当します。 -
で指定されたサイズ
em
は相対値 親要素に対して . このことからem
の「複合問題」(ネストした要素がだんだん大きくなったり小さくなったりすること)です。 例えばbody { font-size:20px; } div { font-size:0.5em; }
与える。
<body> - 20px <div> - 10px <div> - 5px <div> - 2.5px <div> - 1.25px
-
CSS3 の
rem
これは常にルートに対してのみ相対的です。html
要素でサポートされるようになりました。 使用されている全ブラウザの99.67%は .
意見書
視覚障がい者への配慮など、万人に受け入れられるページデザインが良いというのは、誰もが認めるところでしょう。 そのような配慮のひとつに(それだけではありませんが!)、ユーザーがサイトのテキストを大きくして読みやすくできるようにすることがあります。
当初、ユーザーが文字サイズを変更できるようにするには、相対的なサイズ単位を使用する方法しかありませんでした(たとえば
em
s). これは、ブラウザのフォントサイズメニューが、単にルートフォントサイズを変更するだけのものだったからです。 そのため、フォントサイズを
px
ブラウザのフォントサイズオプションを変更しても、拡大縮小されることはありません。
最近のブラウザは(そうでないIE7も)、画像やボックスのサイズも含めて、デフォルトのスケーリング方法をすべて単純にズームインするように変更しました。 基本的には、参照ピクセルを大きくしたり小さくしたりするのです。
確かに、ブラウザのデフォルトのスタイルシートを変更してデフォルトのフォントサイズを調整することはできますが(旧来のフォントサイズオプションに相当)、それは非常に難解な方法であり、誰もそれを実行しないと思います。 1 を実行します。 (Chromeでは、詳細設定→Webコンテンツ→フォントサイズに埋もれています。 IE9では、さらに隠されています。 Altキーを押しながら、「表示」→「文字サイズ」を選択する必要があります)。 ブラウザのメインメニューにあるズームオプションを選択する方がはるかに簡単です。 Ctrl + + / - /mouse wheel)です。
1 - 統計的誤差の範囲内、当然
ほとんどのユーザーがズームオプションを使用してページを拡大縮小すると仮定すると、相対的な単位はほとんど関係ないと思います。 すべてが同じ単位で指定されていれば(画像はすべてピクセルで扱われます)、ページを開発するのはずっと簡単ですし、複利計算の心配をする必要もありません。 ( "I was told there be no math" - 1.5emの計算をする必要があります)。
フォントサイズに相対的な単位のみを使用することのもう一つの潜在的な問題は、ユーザーがサイズ調整したフォントがレイアウトの前提を崩す可能性があることです。 たとえば、テキストが切り取られたり、長すぎたりする可能性があります。 絶対単位を使用すれば、予期しないフォントサイズによってレイアウトが崩れる心配はありません。
ですから、私の答えは、ピクセル単位を使うことです。 私が使っているのは
px
をすべて使用します。 もちろん、状況は様々でしょうし、どうしてもIE6をサポートしたい場合(RFCの神様の慈悲がありますように)には
em
はとにかく
関連
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] CSSの親セレクタはありますか?
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] CSSの三角形はどのように機能するのですか?
-
[解決済み] ボディの高さをブラウザの高さの100%にする
-
[解決済み] preタグでテキストを折り返すにはどうしたらよいですか?
-
[解決済み] HTMLアンカーは'name'と'id'のどちらで作成するのが良いですか?
-
[解決済み] MIME-typeが原因でスタイルシートが読み込まれない
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] HTMLページからのリダイレクト
-
[解決済み] <meta charset="utf-8"> vs <meta http-equiv="Content-Type">.
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] フレックスアイテムを右寄せにするには?
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] HTMLのレイアウトにテーブルを使用しない理由は?[クローズド]
-
[解決済み] div内の画像の下に余分なスペースがある