この記事は人間が書きました
はじめに
こんにちは、赤神です!
この記事は、「1000本ノック」という取り組みの中のフロントエンドのための課題の1つです。
「1000本ノックとは」
https://qiita.com/sora_akagami/items/c8da4296dea3823376ca
emとremの違い
レスポンシブデザインでは、px(ピクセル)のような固定単位だけでなく、em やrem のような相対単位を使うことが非常に重要です。これにより、ユーザーの環境設定や画面サイズに応じて、フォントサイズや余白が柔軟に変化するようになります。
emとremはどちらも「フォントサイズ」を基準にしていますが、どのフォントサイズを基準にするかが違います。
-
em:親要素のフォントサイズを基準にする -
rem:ルート要素(<html>)のフォントサイズを基準にする(rは"Root"の略)
em の問題点:複雑な入れ子構造
em は親要素を基準にします。もし、font-size: 1.2em が指定された <div> の中に、さらに font-size: 1.2em が指定された <p> を配置するとどうなるでしょうか?
<p> のフォントサイズは、親の1.2倍の、さらに1.2倍、つまり1.44倍になってしまいます。このように、入れ子(ネスト)が深くなるほど計算が複雑になり、どの要素がどのサイズになるか予測が困難になります。
rm の利点:シンプルな基準
rem は常にルート要素(<html>)を基準にします。
<html> のフォントサイズが 16px だとすると、
-
font-size: 1.2remが指定された<div>は16px * 1.2 = 19.2px - その
<div>の中にあるfont-size: 1.2remが指定された<p>も16px * 1.2 = 19.2px
どんなに深い入れ子の中にあっても、常に <html> だけを基準に計算されるため、非常に予測可能で管理しやすいのが最大の特徴です。
作成したコード
<!DOCTYPE html>
<html lang="ja" style="font-size: 10px;">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>フロントエンド1000本ノック 0069</title>
</head>
<body>
<div style="font-size: 1.6rem;">
<p style="font-size: 1.6rem;">テキスト</p>
</div>
<div style="font-size: 1.6em;">
<p style="font-size: 1.6em;">テキスト</p>
</div>
</body>
</html>