サイズと単位

フォントサイズをピクセルで設定してページを公開し、快適性のためにブラウザのテキストを大きくした読者がまったく変わらないことに気づきます。カードに固定の幅を指定するとモバイルでオーバーフローします。どちらも同じ質問に帰結します。CSSで数字を入力する場合、その数字は何に対して測定されるのですか?いくつかの単位は固定で、いくつかはフォントにスケールし、いくつかは親にスケールし、いくつかはスクリーンにスケールします。どれがどれかを知ったら、推測するのをやめて、仕事をする単位を選び始めます。
絶対単位と相対単位
CSS単位は2つのファミリーに分かれます。**絶対単位**は決して変わらない固定サイズです。px(ピクセル)はどこでも見かける唯一のものです。相対単位は、読者のフォントサイズやスクリーンの幅など、何か他のものにスケールするサイズです。
部屋を測定することを考えてください。センチメートルは絶対的です。背が高いか低いかに関係なく、壁は400cmです。「3歩分」は相対的です。歩く足によって異なります。絶対単位は正確な制御を提供します。相対単位は、それを見ている人に合わせてページが適応できるようにします。
その適応は重要です。読者の中には、目が楽なため、より大きなデフォルトのテキストサイズを設定する人もいます。相対単位でテキストをサイズ設定すると、その設定が通じて、ページが彼らに合わせて成長します。ピクセルでロックインすると、そのままで彼らを無視します。
pxのような絶対単位は、決して変わらない固定サイズです。相対単位は、読者のフォントサイズやスクリーンの幅など、何か他のものにスケールします。相対単位は、ページが見ている人に適応できるようにします。これは、より大きなテキストサイズを設定する読者にとって重要な理由です。 ピクセルとそれが大丈夫な場合
ピクセル(px)は、長さの小さな固定単位です。16pxは常に16pxなので、考え出すのが最も直接的です。これにより、何をしても同じサイズのままにするべき小さなものに適しています。枠線の厚さ、小さな丸い角、固定アイコン。
.card {
border: 1px solid #ccc; /* ヘアラインの枠線、常に1px */
border-radius: 8px; /* 固定の丸い角 */
}問題は、ピクセルは読者を気にしないということです。誰かがブラウザをより大きなテキストで表示するように設定した場合、24pxにロックしたヘッディングは24pxで留まり、選択を無視します。これがpxが枠線と小さな詳細に適している理由ですが、テキストに望む単位ではない理由です。
px)は固定サイズなので、16pxは常に16pxです。これにより、1pxの枠線や小さな丸い角など、そのままにするべき小さなものに適しています。トレードオフは、pxがより大きなテキストを設定した読者を無視することです。したがって、ページの単語に望む単位ではありません。 emとrem
2つの相対単位がフォントサイズにスケールします。到達すべきものは**rem**です。これはページのルートフォントサイズに対して測定されます。これはドキュメント全体に設定されたベーステキストサイズです(デフォルトでは16px)。したがって、1remは16px、1.5remは24px、2remは32pxです。
h1 {
font-size: 2rem; /* 2 x 16px = 32px */
}
p {
font-size: 1rem; /* 16px、ベースサイズ */
margin-bottom: 1.5rem; /* 下部の24pxのスペース */
}remはそのルートサイズに結びついているため、予測可能です。1.5remはページ上のどこでも同じ意味です。読者がデフォルトのテキストサイズを上げると、remでサイズ設定されたすべてが一緒に成長します。他の単位emは、代わりに要素自体のフォントサイズにスケールします。これは複雑になる可能性があるため、remで開始すると、ほとんど引っかかることはありません。
remとemはどちらもフォントサイズにスケールし、開始するのはremです。ページのルートサイズに対して測定されます。これはデフォルトでは16pxなので、1.5remは24pxで、どこでも同じ意味です。emは代わりに要素自身のフォントサイズにスケールし、複雑になる可能性があるため、まずremに到達してください。 パーセンテージ
パーセンテージ(%)は、親に対して要素をサイズ設定します。幅の場合、width: 50%は、要素が座るボックスの幅の半分を意味します。その幅がどうなるかは関係ありません。
.sidebar {
width: 25%; /* 親の幅の4分の1 */
}
.content {
width: 75%; /* 残りの4分の3 */
}これはレイアウトを流動的にするものです。幅は親の分数であるため、親がするときにそれらは縮小して成長します。ウィンドウのサイズを変更し、50%の列は、固定の500pxの列のようにエッジをこぼすのではなく、幅の半分のままです。その柔軟性が、パーセンテージがレスポンシブデザインに非常に頻繁に表示される理由です。
width: 50%は要素が配置されるボックスの幅の半分です。これにより、列が流動的になります。ウィンドウのサイズを変更し、それらはエッジをこぼすのではなく、成長して縮小します。これは、任意のスクリーンに適合するレイアウトの背後にある主なツールの1つです。 ビューポート単位
ビューポート単位は、ブラウザウィンドウ自体に対してサイズを設定します。**vw**はビューポート幅のパーセンテージであり、vhはビューポート高さのパーセンテージです。ビューポートはページの見える領域です。したがって、100vwはウィンドウの全幅で、100vhはその全高さです。
.hero {
height: 100vh; /* スクリーン高さ全体を埋めます */
}これは、ランディングバナーのような全画面セクションに進むべき対象です。ウィンドウの全画面に埋める必要があります。ユニットがウィンドウを追跡するため、セクションは誰かがサイズを変更したり、デバイスを回転させたりするときに全画面のままで、1つのスクリーンで正しかったであろう固定ピクセル高さを設定することなく。
vwとvhはブラウザウィンドウに対してサイズを設定します。100vwはその全幅であり、100vhはその全高さです。ランディングバナーなどの全画面セクションに進むべき対象です。ウィンドウのサイズを変更するときに全画面のままで、1つのピクセル高さにロックされるのではなく。 
