CSS ・ CSSの記法

値と単位

色の書き方と px・%・em・rem・vw などの単位

色やサイズの値には、いくつかの書き方があります。色は色名・16進数・rgb()・rgba() など、サイズは px のような絶対値と、% や rem のような相対値を使い分けます。

色の値
色名・#16進数・rgb()・rgba()
絶対値
px
相対値
%・em・rem・vw・vh・vmin・vmax
01

サンプルコード

HTML
1<div class="parent">
2 <p class="em">1.5em = 30px</p>
3 <p class="rem">1.5rem = 24px</p>
4</div>
5<div class="bar half">width: 50%</div>
6<div class="bar vw">width: 30vw</div>
CSS
1.parent {
2 font-size: 20px;
3}
4.em {
5 font-size: 1.5em;
6 margin: 0;
7}
8.rem {
9 font-size: 1.5rem;
10 margin: 0 0 10px;
11}
12.bar {
13 padding: 4px 8px;
14 margin-bottom: 6px;
15 font-size: 14px;
16 background: #f6ead8;
17 border-left: 4px solid #b68235;
18}
19.half {
20 width: 50%;
21}
22.vw {
23 width: 30vw;
24}
02

実行結果

ブラウザでの表示親の文字サイズは 20px です。em は親(20px)を、rem は html(16px)を基準に計算されます
03

解説

色の値は、red のような色名、#ffffff のような16進数、rgb(255, 255, 255) のように赤・緑・青を0〜255で表す書き方があります。rgba(255, 255, 255, .8) は rgb に透明度(Alpha)を加えたもので、最後の値が 0(透明)〜1(不透明)です。16進数は #ff0000 を #f00 のように3桁に省略できます。

px は画面の1ドットを1とする絶対値で、親や画面の大きさに関係なく同じ大きさになります。

% は親要素の値を基準にした相対値です。width: 50% なら親の幅の半分です。em は親要素の文字サイズ(font-size)が基準で、1.5em は親の1.5倍です。rem はルート要素(html)の文字サイズが基準で、ブラウザの初期値は 16px なので 1.5rem は 24px になります。

vw・vh はビューポート(ブラウザの表示領域)の横幅・縦幅を基準にした相対値で、1vw が横幅の1%です。vmin・vmax は、横幅と縦幅の小さいほう・大きいほうを基準にします。

単位の使い分けは、制作会社や案件のコーディングルール(レギュレーション)で決められていることが多いため、それぞれの違いを理解しておくことが大切です。一般的には、文字サイズは px・em・rem を使います。rem で指定しておくと、html の font-size を変えるだけでページ全体の文字サイズを一気に変更できます(PCサイトだけのページなら px でも問題ありません)。

レイアウトのサイズは px と % を使い分けます。header や main のようにページのレイアウトを担う要素の幅を % で指定すると、画面のサイズが変わっても要素が見切れたり、横スクロールが出たりしません。

04

応用例・注意点

色の値と単位

値・単位説明
red / blue / green色の名前
#ffffff / #fff16進数(3桁に省略できる)
rgb(255, 255, 255)赤・緑・青を0〜255で
rgba(255, 255, 255, .8)rgb に透明度(0〜1)を加えたもの
px1px = 1ドットの絶対値
%親要素の値を基準にした相対値
em親要素の font-size を基準にした相対値
remルート要素(html)の font-size を基準にした相対値
vwビューポートの横幅の1%
vhビューポートの縦幅の1%
vmin横幅と縦幅の小さいほうの1%
vmax横幅と縦幅の大きいほうの1%

文字サイズを rem でまとめて変える

rem で指定しておくと、html の font-size を変えるだけで全体が拡大・縮小します。

CSS
1h1 {
2 font-size: 2rem;
3}
4p {
5 font-size: 1rem;
6}
7
8/* 広い画面では全体を少し大きく */
9@media (min-width: 768px) {
10 html {
11 font-size: 112.5%;
12 }
13}

レイアウトの幅は % と max-width で

% で画面に合わせて伸び縮みさせ、max-width で広がりすぎを防ぎます。

CSS
1.container {
2 width: 90%;
3 max-width: 1080px;
4 margin: 0 auto;
5}

画面の高さいっぱいのメインビジュアル

vh を使うと、ブラウザの縦幅に合わせた高さにできます。

CSS
1.hero {
2 min-height: 100vh;
3}

注意点

  1. 010 のときは単位を省略できます(margin: 0)。それ以外は、数値と単位の間に空白を入れずに書きます(16 px は無効)。
  2. 02em は入れ子にすると、親の em がさらに掛け算されて大きくなりすぎることがあります。迷ったら rem を使います。
  3. 03100vw はスクロールバーの幅を含むため、width: 100vw にすると横スクロールが出ることがあります。幅いっぱいにするなら width: 100% を使います。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉