CSSでemを開く正しい方法の詳細な説明

CSSでemを開く正しい方法の詳細な説明

「通常 1em=16px」と言うのはなぜですか?

ユーザーのブラウザによってレンダリングされるデフォルトのテキスト サイズは「16 ピクセル」です。つまり、Web ページの「body」とその子要素のデフォルトのテキスト サイズは、ユーザーのブラウザでは「16 ピクセル」です。
私たちは皆これを知っています: em (およびrem ) は相対的な単位です! 「相対的」とは、次のことを意味します。

  • 相対計算には参照が必要なので、ここでの相対は親要素のfont-sizeを参照します。たとえば、div でフォント サイズを「16px」に設定した場合、この div の子孫要素は、子孫要素で明示的に再度設定しない限り、そのフォント サイズを継承します。ユーザーがブラウザの UI コントロールを使用してテキスト サイズを変更すると、ページ全体も拡大 (または縮小) されるため、ユーザーがブラウザのフォントを変更してもページ全体がクラッシュすることはありません。

em は親要素に対して相対的であるのに対し、rem は「ルート」要素 (html) に対して相対的であるというだけです。


それは一体何ですか?

em: 相対単位。基本値は現在の要素のフォント サイズです。実際の値は (継承された) 親要素によって異なります。
著者がデータと継続的なテストを調べた後、「気づかれなかった」式が見つかりました。
ターゲット em 値 = ターゲット ピクセル値 / 親要素のピクセル値

(↑:emと親要素font-sizeの関係

<本文>
	私は<p>yunxiaomeng</​​p>です。
</本文>
体{
	フォントサイズ: 16px;
}
p{
	フォントサイズ: 1.2em;
} 

テスト1

写真の赤い枠が見えますか? pタグの実際のレンダリングサイズ(ターゲットピクセル値)は、16(px)×1.2 = 19.2(px)です。

ここで注意すべき重要な点が 1 つあります。同じ要素の別のセレクター/属性が、以前の値を上書きするために異なる font-size 値を使用する場合、このドメインの em の基本値が変更されます。
たとえば、上記の p に別の属性を追加します。

p{
	フォントサイズ: 1.2em;
	パディング: 1.2em;
}

すると、実際にレンダリングされたパディングの値(ターゲットピクセル値)は 19.2(px) x 1.2 = 23.04(px)(つまり 16 x 1.2 x 1.2)になります。

テスト2

このため、子要素の各レイヤーに em を設定すると、実際のサイズが希望どおりにならない場合があります。
(フォントと同じ値のマージンが存在する理由については、Zhang Xinxu の「CSS World」に記載されている「ゴースト空白要素」を参照してください。)


レムも同じでしょうか? !

rem も相対的な単位であり、ルート要素を基準にして変化します。
em とほぼ同じ方法で計算されます。しかし、ここでは「よくある誤解」があります。一般的に、レスポンシブな適応を行うために、ルート要素のfont-size値をページ幅に合わせて動的に変更することができます。

htmlWidth を document.documentElement.clientWidth || document.body.clientWidth とします。
htmlDom = document.getElementsByTagName('html')[0] とします。
	
window.onresize = 関数 () {
    htmlDom.style.fontSize=htmlWidth/20+'px';
};

しかし、多くの人は、rem 値が「ページ サイズ」に対応すると誤解しています。実はこれは間違っています!

そして今では、CSS を通じてレスポンシブにすることが完全に可能になりました。
html { font-size: calc(112.5% + 4 * (100vw - 600px) / 400); }メディアクエリ@media付き

CSS で em を開く正しい方法についての記事はこれで終わりです。CSS で em を開く方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  njs モジュールを使用して nginx 構成に js スクリプトを導入する

>>:  サーバーから返される14の一般的なHTTPステータスコードの詳細な説明

推薦する

Vueコンポーネントの7つの通信方法についての深い理解

目次1. props/$emit導入コードサンプル2.Vスロット導入コードサンプル3.$refs/ ...

MySQL ダーティ ページ フラッシュとテーブル スペースの縮小の原理の分析

mysql ダーティページWAL メカニズムにより、InnoDB はステートメントを更新するときに、...

MySQL クエリのソートとクエリ集計関数の使用法の分析

この記事では、例を使用して、MySQL クエリのソート関数とクエリ集計関数の使用方法を説明します。ご...

Linux で PHP を 5.6 にアップグレードする実用的な方法

1: ターミナルに入ったらPHPのバージョンを確認する php -v出力は次のようになります。 PH...

LinuxシステムにISOファイルをインストールする方法

Linux システムで iso ファイルをインストールするにはどうすればいいですか?インストール手順...

CSS で子 div の高さを親コンテナの残りのスペースに合わせる方法

1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...

MySQLトランザクションとSpring分離レベルの実装原理の詳細な説明

1. トランザクションはACID特性を持つ原子性: トランザクションは、トランザクションによって分割...

Docker Hubの動作原理と実装プロセスの分析

GitHub が提供するコード ホスティング サービスと同様に、Docker Hub はイメージ ホ...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

HTML タグ sup と sub の応用の紹介

HTML タグ: 上付き文字HTML では、<sup> タグは上付き文字のテキストを定義...

Ubuntu 18.04 に phpMyAdmin をインストールするための詳細なチュートリアル

Ubuntu 18.04 上の Apache で動作するように phpMyAdmin をインストール...

フロントエンドタスク構築のための強力なツールであるGulp.jsの使い方を詳しく説明します

目次概要Gulp.jsをインストールするGulp.jsを使用してプロジェクトを作成するgulpfil...

Vueコンポーネントの基本のまとめ

コンポーネントの基本1 コンポーネントの再利用コンポーネントは再利用可能な Vue インスタンスです...

モバイル端末のジャンプ問題を解決する(CSS遷移、ターゲット疑似クラス)

序文モバイル端末に触れたばかりの友人の多くは、クリックジャンプルーティング、特にVueルーティングを...