box-shadow
はボックスの影を指定するためのCSSプロパティです。
ボックスの影にはbox-shadow
、文字の影にはtext-shadow
を使います。
CSSプロパティ | 対象 |
---|---|
box-shadow | ボックス |
text-shadow | 文字 |
概要
.sample
クラスを持つ<div>
要素を準備します。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample
クラスにbox-shadow: 0 0 7px red;
と指定します。赤い影ができます。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 7px red; }
0 0 7px red
;red
の設定をgreen
と#359
に変更してみます。影の色が変わります。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 7px green; }
green
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 7px #359; }
#359
3番目の設定(7px
)を3px
と15px
に変更してみます。 影の広がり幅が変わります。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 3px red; }
3px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 15px red; }
15px
1番目の設定(0
)を-10px
、-5px
、5px
、15px
に変更してみます。 影が左右に移動します。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: -10px 0 7px red; }
-10px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: -5px 0 7px red; }
-5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 0 7px red; }
5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 15px 0 7px red; }
15px
2番目の設定(0
)を-10px
、-5px
、5px
、15px
に変更してみます。 影が上下に移動します。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 -10px 7px red; }
-10px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 -5px 7px red; }
-5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 5px 7px red; }
5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 15px 7px red; }
15px
1番目の設定(0
)と2番目の設定(0
)を変えることで、影が斜めになります。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red; }
5px 5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: -5px 5px 7px red; }
-5px 5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: -5px -5px 7px red; }
-5px -5px
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px -5px 7px red; }
5px -5px
box-shadow
にinset
を加えると、内側に影ができます。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 7px red inset; }
inset
斜めの影の場合もinset
で内側になります。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red; }
inset
なし)<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red inset; }
inset
あり)解説
box-shadow
には4つ(+1)の値を指定する必要があります。
順番 | 内容 | 設定値 | 正の値 | 負の値 |
---|---|---|---|---|
1 | 左右方向の位置 | 数値px | 右に影 | 左に影 |
2 | 上下方向の位置 | 数値px | 下に影 | 上に影 |
3 | 影の幅 | 数値px | 幅 | - |
4 | 影の色 | カラーコード | - | - |
5 | (オプション) 内側 | inset | - | - |
1番目の値は左右方向の影の位置です。 正の値を指定すると右に影ができます。 負の値を指定すると左に影ができます。
2番目の値は上下方向の影の位置です。 正の値を指定すると下に影ができます。 負の値を指定すると上に影ができます。
3番目の値は影の幅です。負の値は指定できません。
4番目の値は影の色です。カラーコードで指定します。
内側に影を表示するには末尾(5番目)にinset
を追加します。 ※ 先頭(1番目)としても設定できますが、ややこしいので止めた方がよいでしょう。
設定手順
まず0 0 5px red
などから始めると書きやすいでしょう。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 5px red; }
好きな色に変えます。(第4設定値)
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 5px blue; }
幅を変えます。(第3設定値)
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 0 0 15px blue; }
左右を変えます。(第1設定値)
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 0 15px blue; }
上下を変えます。(第2設定値)
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 8px 15px blue; }
内側にするならinset
を加えます。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 8px 15px blue inset; }
影の重ね合わせ
カンマ(,
)で繋ぐと、複数の影を重ね合わせることもできます。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red; }
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red, -5px 5px 7px orange; }
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red, -5px 5px 7px orange, -5px -5px 7px yellow; }
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red, -5px 5px 7px orange, -5px -5px 7px yellow, 5px -5px 7px green; }
なお、重ねる順番によって表示結果が変わることに注意してください。 先に設定した影が上に表示されます。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: 5px 5px 7px red, -5px 5px 7px green; }
red
が先<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 10px; /* 内側の余白 */ }
.sample { box-shadow: -5px 5px 7px green, 5px 5px 7px red; }
green
が先