[CSSチュートリアル】CSSでemを開く正しい方法 詳細へ
なぜ "通常 1em=16px" と言っているのですか?
ユーザーのブラウザで表示されるデフォルトのテキストサイズは "16px" です。つまり、ウェブページ内の "body" およびその子要素のテキストサイズは、ユーザーのブラウザではデフォルトで "16px" として表示されます。
私たちは皆、次のことを知っています。
em
(そして
rem
)は相対的な単位です! "Relative"の意味です。
-
相対計算は参照を持たなければならないので、ここでは相対的に親要素の
font-size
. たとえば、div でフォントサイズを "16px" に設定すると、その div の子孫のチュートリアルは、その子孫でフォントサイズがリセットされない限り、そのフォントサイズを引き継ぎます。ユーザーがブラウザの UI コントロールでテキスト サイズを変更した場合、ページ全体が拡大 (または縮小) されるため、ブラウザのフォントを変更した後にページ全体がクラッシュすることがありません!
emだけが親要素、remは"root"要素(html)に対して相対的です。
emの本当の姿は?
em:相対的な単位です。基本値は現在の要素のフォントサイズであり、実際の値は(継承された)親要素に依存する。
データ確認+テストの結果、"unnoticed"の公式があります。
ターゲットem値=ターゲット画素値/親画素値
(↑: emと親要素との関係
font-size
が関連付けられています。
<body>
I'm <p>yunxiaomeng</p>.
</body>
body{
font-size: 16px;
}
p{
font-size: 1.2em;
}
画像に赤い枠があるのがわかりますか?実際にレンダリングされるpタグのサイズ(目標ピクセル値)は、16(px) x 1.2 = 19.2(px) です。
ここでもうひとつ特別な注意点があります。同じ要素の別のセレクタ/属性が、以前の値を別の font-size 値で上書きした場合、このドメインの下で em の基本値を変更することになります!
例えば、上のpに別の属性を追加してみましょう。
p{
font-size: 1.2em;
padding: 1.2em;
}
すると、paddingの実際のレンダリング値(目標ピクセル値)=19.2(px) x 1.2 = 23.04(px) (つまり、16 x 1.2 x 1.2) となります。
そのため、子要素のレイヤーごとにemを設定しても、実サイズが思い通りにならないようなのです
(なぜフォントの値と同じマージンが入っているのかについては、張新旭の
CSSの世界
)
remもそうなんですか?
また、remは相対単位で、ルートroot要素に対して相対的に変化する。
計算方法はemとほぼ同じです。しかし、ここで "一般的な誤解" があります: 通常は、ルート要素の
font-size
の値は、レスポンシブな適応を行うために、ルート要素の
let htmlWidth=document.documentElement.clientWidth || document.body.clientWidth;
let htmlDom=document.getElementsByTagName('html')[0];
window.onresize=function () {
htmlDom.style.fontSize=htmlWidth/20+'px';
};
しかし、多くの人が rem の値は "ページサイズ固有のものであると誤解しています" 。 これは実は間違いなのです
<ブロッククオート
そして今のところ、cssでレスポンシブにすることは完全に可能です。
html { font-size: calc(112.5% + 4 * (100vw - 600px) / 400); }
メディアクエリのマッチング
@media
CSSでemを開く正しい方法について、この記事を紹介し、より関連するCSS open emの内容は、スクリプトホームの過去の記事を検索するか、次の関連記事を引き続き閲覧してください、私はあなたが将来よりスクリプトホームをサポートすることを願っています!。
関連
-
[css3]ピュアCSS3によるネオンライト効果
-
[CSSチュートリアル】CSSカウンターを使った数字の並びの美化方法
-
[CSSチュートリアル】子要素のmargin-topが親要素の移動を引き起こす問題解決
-
[CSSチュートリアル】CSSで粘着効果をつけてみる方法
-
[CSSチュートリアル]cssに0.5pxの行を実装してモバイル互換の問題を解決する(推奨)
-
[css3]CSS3ベジェ曲線サンプル:リンクホバーアニメーション効果の作成
-
[CSSチュートリアル]overflow:autoの使い方解説
-
[css3]CSS3:overflowプロパティ
-
[css3]水平方向のプログレスバーの最後にテキストを表示するCSSコード
-
[CSSチュートリアル】css3 背景画像 半透明 コンテンツ 不透明 方法例
最新
-
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チュートリアル】Pure CSSカスタム複数行抜け問題(原理から実装まで)
-
[CSSチュートリアル】シングルセレクトの折りたたみメニュー機能を実現するCSS
-
[CSSチュートリアル】CSS擬似要素::マーカー解説
-
[CSSレイアウト例】CSSで中央揃えを実現する方法N種
-
[css3]CSS3アニメーションによる光のボタンの流れの効果
-
フロントエンドの落とし穴 リソースはスタイルシートとして解釈されるが、MIMEタイプはtext/htmlで転送される。"<URL>". css スタイルの失敗
-
[CSSチュートリアル】シンプルなナビゲーションバー機能を実現するhtml+css
-
[CSSチュートリアル]実装ステップの吸引上部と下部のH5レイアウトのための純粋なCSSソリューション
-
[CSSチュートリアル】CSSでデータホットスポット効果を実現する方法
-
[CSSチュートリアル】CSS疑似要素を使って、連続する複数の要素のスタイルを制御する