[解決済み] なぜpxでなくemなのか?
質問
スタイルシートでサイズや距離を定義するには
em
ピクセル単位ではなく そこで質問ですが、なぜ
em
ではなく
px
CSSでスタイルを定義するときに?これを説明する良い例はありますか?
どのように解決するのですか?
この質問をした理由は、CSSを楽しくハックしているうちに、emの使い方を忘れてしまったからです。私はフォントのサイズ調整そのものについて話していなかったので、私が質問を一般的なものにしていたことに人々は気づいていませんでした。私はむしろ、スタイルを 任意のブロック要素 をページ上に表示します。
として ヘンリック・ポール や他の人が指摘したように、emは要素で使用されているフォントサイズに比例します。 ブロック要素のサイズをpxで定義するのはよくあることですが、ブラウザでフォントのサイズを変更すると、たいていこの設計が崩れてしまいます。フォントのサイズ変更は、一般に、ショートカットキーの Ctrl + + または Ctrl + - . そのため、代わりにemを使用するのが良い方法です。
pxを使用して幅を定義する
以下に、その例を示します。例えば、divタグをスタイリッシュな日付ボックスにしたい場合、以下のようなHTMLコードが考えられます。
<div class="date-box">
<p class="month">July</p>
<p class="day">4</p>
</div>
簡単な実装では
date-box
クラスを px 単位で指定します。
* { margin: 0; padding: 0; }
p.month { font-size: 10pt; }
p.day { font-size: 24pt; font-weight: bold; }
div.date-box {
background-color: #DD2222;
font-family: Arial, sans-serif;
color: white;
width: 50px;
}
問題点
しかし、ブラウザで文字のサイズを大きくしようとすると、デザインが崩れてしまいます。また、テキストはボックスの外側にはみ出しますが、これはSOのデザインで起こることとほぼ同じです。
フローディン
が指摘する。にロックされているため、ボックスの幅は同じ大きさのままだからです。
50px
.
代わりにemを使用する
よりスマートな方法は、代わりにemsで幅を定義することです。
div.date-box {
background-color: #DD2222;
font-family: Arial, sans-serif;
color: white;
width: 2.5em;
}
* { margin: 0; padding: 0; font-size: 10pt; }
// Initial width of date-box = 10 pt x 2.5 em = 25 pt
// Will also work if you used px instead of pt
つまり、date-boxに定義されたfont-sizeに比例して、テキストと一緒にボックスもサイズアップするのです。この例では、フォントサイズは次の場所で定義されています。
*
を10ptとすると、そのフォントサイズの2.5倍の大きさになります。そのため、ブラウザでフォントのサイズを調整する場合、ボックスはそのフォントサイズの2.5倍の大きさになります。
関連
-
[CSSチュートリアル】resizeで画像のプレビューを切り替える方法
-
[css3]ピュアCSS3でdivのinとoutの効果を順番に実現する
-
[CSSチュートリアル】ピュアCSSで作るスクロールシャドウ効果
-
フロントエンドの落とし穴 リソースはスタイルシートとして解釈されるが、MIMEタイプはtext/htmlで転送される。"<URL>". css スタイルの失敗
-
[解決済み] セレクトボックスのプレースホルダーを作成するにはどうすればよいですか?
-
[解決済み] CSSのdisplayプロパティで遷移する
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] コンテナの幅に応じたフォントの拡大縮小
-
[解決済み] CSS画像を背景で伸縮させる - 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 実装 サイバーパンク風ボタン
おすすめ
-
cssで背景色の半透明化を実現する2つの方法
-
[CSSチュートリアル】Pure CSSカスタム複数行抜け問題(原理から実装まで)
-
[CSSチュートリアル】カットコーナー+ボーダー+プロジェクション+コンテンツ背景色のグラデーション効果を実現するCSS
-
[CSSチュートリアル】QQtabBarからCSS命名規則BEMの詳細を見る
-
[CSSチュートリアル]CSSは、2列のレイアウト、固定幅の左側、適応するためのさまざまな方法の右側を達成するために
-
[CSSチュートリアル】Chromeのタブバーを実装するためのCSSのコツ
-
[CSSチュートリアル】CSSのfloatとunfloatについて
-
[css3]スクロールバー美化効果を実現するcss3サンプルコード
-
[CSSチュートリアル】インタビュー必見!聖杯レイアウトとダブルウィングレイアウトの違いとは?
-
[CSSチュートリアル】CSS複合セレクタの具体的な使用方法