background
は背景を指定するためのCSSプロパティです。 background-color
(背景色)、background-image
(背景画像、グラデーション)、background-repeat
(繰り返し)、background-size
(大きさ)、background-position
(起点)、background-origin
/background-clip
(境界)についても解説します。
background
プロパティ
CSSプロパティ | 設定内容 | デフォルト値 |
---|---|---|
background-color | 背景色 | transparent |
background-image | 背景画像、グラデーション | none |
背景色の指定にはbackground-color
、背景画像とグラデーションの指定にはbackground-image
を使いますが、これらをbackground
プロパティとして書くこともできます。
それぞれの詳細は後述しますが、background-color
をbackground
と書いても同じ表示結果になります。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: lightgreen; }
background-color
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background: lightgreen; }
background
同じようにbackground-image
でもbackground
でも同じ結果です。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); }
background-image
<div class="sample">sample</div>
.sample { background: url( "/images/samples/flower.jpg" ); }
background
background-color
| 背景色
.sample
クラスを持つ<div>
要素を準備します。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
背景色はbackground-color
プロパティにカラーコードを指定します。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: lightgreen; }
lightgreen
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: #ee91ee; }
#ee91ee
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: #359; }
#359
: transparent
デフォルト値はtransparent
(透過色)です。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: transparent; }
文字が読みにくい場合
背景色が濃いために文字が読みにくい場合には、color
プロパティで(文字の色を)明るい色に変更しましょう。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: #359; }
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: #359; color: white; }
color: white
もしくはtext-shadow
プロパティで周りを明るくする方法もあります。
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: #359; text-shadow: 0 0 5px white; }
text-shadow
<div class="sample">sample</div>
.sample { display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 1.5rem; /* 内側の余白 */ }
.sample { background-color: #359; text-shadow: 3px 3px 5px white, -3px 3px 5px white, -3px -3px 5px white, 3px -3px 5px white; }
text-shadow
を重ねるbackground-clip
| 色の境界
背景色background-color
の境界を詳細に設定するには、background-clip
を使います。
設定値 | 着色領域 | デフォルト値 |
---|---|---|
border-box | 境界線(border )の下 +padding の外側 +padding の内側 | |
padding-box | padding の外側 +padding の内側 | |
content-box | padding の内側 |
.sample
クラスを持つ<div>
要素を準備します。 デフォルトでは境界線(border
)の下まで背景色(orange
)が着色されていることを確認してください。
<div class="sample">sample</div>
.sample { background-color: orange; border: 10px dotted blue; /* 境界線 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 20px; /* 内側の余白 */ }
background-clip
にborder-box
、padding-box
、content-box
を指定してみます。 着色の領域が狭くなっていくことが分かります。
<div class="sample">sample</div>
.sample { background-color: orange; border: 10px dotted blue; /* 境界線 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 20px; /* 内側の余白 */ }
.sample { background-clip: border-box; }
border-box
<div class="sample">sample</div>
.sample { background-color: orange; border: 10px dotted blue; /* 境界線 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 20px; /* 内側の余白 */ }
.sample { background-clip: padding-box; }
padding-box
<div class="sample">sample</div>
.sample { background-color: orange; border: 10px dotted blue; /* 境界線 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 20px; /* 内側の余白 */ }
.sample { background-clip: content-box; }
content-box
border-box
の場合は(無指定の場合と同じく)境界線の下まで着色されていますが、padding-box
にすると境界線の下には着色されません。 content-box
にするとpadding
の外側も着色されなくなります。
background-image
| 背景画像
.sample
クラスを持つ<div>
要素を準備します。
<div class="sample">sample</div>
背景画像に設定するには、background-image
にurl( "画像ファイルのパス" )
を指定します。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); }
background-image
グラデーションの指定方法については このページ内で後述します。
背景画像を詳細に設定するためには、以下のCSSプロパティを共に指定する必要があります。 (これらについて、グラデーションの前に解説します。)
CSSプロパティ | 設定内容 | デフォルト値 | 他の設定値 |
---|---|---|---|
background-repeat | 繰り返し | repeat | no-repeat /repeat-x /repeat-y |
background-size | 大きさ | auto | contain /cover |
background-position | 起点 | left top | center /top /bottom /left /right /left bottom /right top /right bottom |
background-origin | 境界 | padding-box | border-box /content-box |
background-repeat
| 繰り返し
background-repeat
はbackground-image
と共に指定します。背景画像表示の繰り返しを指定します。
設定値 | 機能 | デフォルト |
---|---|---|
no-repeat | 繰り返さない | |
repeat-x | 横に繰り返す | |
repeat-y | 縦に繰り返す | |
repeat | 縦横に繰り返す |
background-image
のみを指定します。 縦横の両方向に繰り返しています。(デフォルト)
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); }
background-repeat
にno-repeat
を指定した場合、繰り返しません。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; }
no-repeat
background-repeat
にrepeat-x
を指定した場合、横方向だけ繰り返します。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: repeat-x; }
repeat-x
background-repeat
にrepeat-y
を指定した場合、縦方向だけ繰り返します。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: repeat-y; }
repeat-y
background-repeat
にrepeat
を指定した場合は、無指定の場合と同じく縦横の両方向に繰り返しています。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: repeat; }
repeat
(デフォルト値)background-size
| 大きさ
background-size
はbackground-image
と共に指定します。背景画像表示の大きさを指定します。
設定値 | 合わせる対象 | デフォルト | %を使った 同じ意味の設定値 |
---|---|---|---|
contain | (表示領域の)幅 | 100% auto 、100% | |
cover | (表示領域の)高さ | auto 100% | |
auto | なし (※ そのままの大きさ) |
背景画像(background-image
)を指定し、画像表示(background-repeat
)を繰り返さない(no-repeat
)ように指定します。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; }
background-size
にcontain
を指定した場合、画像は表示領域の幅に一致します。高さは短かったり、はみ出したりします。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: contain; }
contain
background-size
にcover
を指定した場合、画像は表示領域の高さに一致します。幅は短かったり、はみ出したりします。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: cover; }
cover
background-size
にauto
を指定した場合は、無指定の場合と同じく(画像の)そのままの大きさで表示されます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: auto; }
auto
(デフォルト値)%で指定する方法
%
を使って、表示領域に対する割合で指定することもできます。
設定値は2つです。
- 1つ目の値 = (表示領域に対する)幅の割合
- 2つ目の値 = (表示領域に対する)高さの割合(省略時は
auto
になります。)
具体的に見て行きましょう。
100% 100%
と設定した場合、表示領域全体に画像が引き延ばされます。 (画像と表示領域の縦横比が同じでない場合には)画像は歪みます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 100% 100%; }
100% 100%
100% 50%
にした場合、上下に2枚表示されます。画像は歪みます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 100% 50%; }
100% 50%
50% 100%
にした場合、左右に2枚表示されます。画像は歪みます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 50% 100%; }
50% 100%
50% 50%
、33% 33%
、50% 33%
、33% 50%
と指定した場合の例を示します。 いずれも画像は歪んでいます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 50% 50%; }
50% 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 33% 33%; }
33% 33%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 50% 33%; }
50% 33%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 33% 50%; }
33% 50%
このように2つの値を指定すると(通常は)画像が歪みます。 これを避けるには片方をauto
に指定します。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: auto 50%; }
auto 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: auto 33%; }
auto 33%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 50% auto; }
50% auto
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 33% auto; }
33% auto
2つ目の値にauto
を指定している場合、これを省略することができます。 50%
の場合。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 50% auto; }
50% auto
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 50%; }
50%
33%
の場合。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 33% auto; }
33% auto
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-size: 33%; }
33%
以上のことからcontain
、100% auto
、100%
は同じ表示結果になります。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: contain; }
contain
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% auto; }
100% auto
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100%; }
100%
また、cover
とauto 100%
も同じ結果です。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: cover; }
cover
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: auto 100%; }
auto 100%
background-position
| 起点
background-position
はbackground-image
と共に指定します。背景画像表示の起点を指定できます。
設定値 | 起点は表示領域の・・・ | デフォルト | %を使った 同じ意味の設定値 |
---|---|---|---|
center | 中心 | 50% 50% | |
top | 上辺の中央 | 50% 0 | |
bottom | 下辺の中央 | 50% 100% | |
left | 左辺の中央 | 0 50% | |
right | 右辺の中央 | 100% 50% | |
left top | 左上の角 | 0 0 | |
right top | 右上の角 | 100% 0 | |
right bottom | 右下の角 | 100% 100% | |
left bottom | 左下の角 | 0 100% |
背景画像(background-image
)を指定し、画像表示(background-repeat
)を繰り返さない(no-repeat
)ように指定します。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; }
background-position
にcenter
を指定した場合、表示領域の中心に表示されます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: center; }
center
background-position
にtop
/bottom
/left
/right
と指定した場合、それぞれ上辺/下辺/左辺/右辺の中央に表示されます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: top; }
top
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: bottom; }
bottom
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: left; }
left
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: right; }
right
left top
/right top
/right bottom
/left bottom
と指定した場合、角に接して表示されます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: left top; }
left top
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: right top; }
right top
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: right bottom; }
right bottom
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: left bottom; }
left bottom
デフォルト値はleft top
です。
%で指定する方法
%
を使って、表示領域に対する割合で指定することもできます。
設定値は2つです。
- 1つ目の値 = (表示領域に対する)横方向の割合。
0
が左辺に接し、100%
が右辺に接します。 - 2つ目の値 = (表示領域に対する)縦方向の割合。
0
が上辺に接し、100%
が下辺に接します。
0 50%
、25% 50%
、50% 50%
、75% 50%
、100% 50%
と指定すると右に移動して行きます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 0 50%; }
0 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 25% 50%; }
25% 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 50% 50%; }
50% 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 75% 50%; }
75% 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 100% 50%; }
100% 50%
50% 0
、50% 25%
、50% 50%
、50% 75%
、50% 100%
と指定すると下に移動して行きます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 50% 0; }
50% 0
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 50% 25%; }
50% 25%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 50% 50%; }
50% 50%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 50% 75%; }
50% 75%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 50% 100%; }
50% 100%
20% 30%
をright 80% bottom 70%
と書くこともできます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: 20% 30%; }
20% 30%
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-position: right 80% bottom 70%; }
right 80% bottom 70%
応用 : 帯を作る
background-position
をcenter
にします。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-position: center; }
background-position: center
加えて、繰り返し(background-repeat
)をrepeat-x
かrepeat-y
にすると、横か縦の帯ができます。
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-position: center; background-repeat: repeat-x; }
background-repeat: repeat-x
<div class="sample">sample</div>
.sample { background-image: url( "/images/samples/flower.jpg" ); background-position: center; background-repeat: repeat-y; }
background-repeat: repeat-y
background-origin
| 画像の境界
背景画像background-image
の境界を詳細に設定するには、background-origin
を使います。
設定値 | 着色領域 | デフォルト値 |
---|---|---|
border-box | 境界線(border )の下 +padding の外側 +padding の内側 | |
padding-box | padding の外側 +padding の内側 | |
content-box | padding の内側 |
.sample
クラスを持つ<div>
要素を準備します。 デフォルトでは背景画像はpadding
の外側まで広がって表示されていることを確認してください。
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
background-origin
にborder-box
、padding-box
、content-box
を指定してみます。 背景画像の広がりが狭くなっていくことが分かります。
border-box
の場合は境界線(border
)の下まで背景画像が(少し拡大されて)表示されています。 padding-box
は無指定の場合と同じです。 content-box
にするとpadding
の内側のみに背景画像が表示されます。このとき画像は縮小されています。
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
.sample { background-origin: border-box; }
border-box
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
.sample { background-origin: padding-box; }
padding-box
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
.sample { background-origin: content-box; }
content-box
ちなみにbackground-origin
ではなくbackground-clip
として指定した場合、背景画像を切り取るのではなく背景色を切り取ることになるので、背景画像は縮小や拡大されることはありません。 (background-size: 100% 100%
を指定しているので、元から歪んでいますが。)
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
.sample { background-clip: border-box; }
border-box
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
.sample { background-clip: padding-box; }
padding-box
<div class="sample">sample</div>
.sample { background-color: yellow; background-image: url( "/images/samples/flower.jpg" ); background-repeat: no-repeat; background-size: 100% 100%; border: 15px dotted blue; /* 境界線 */ color: blue; /* 文字の色 */ display: inline-block; /* インライン・ブロック要素 */ font-size: 2rem; /* 文字の大きさ */ padding: 30px; /* 内側の余白 */ }
.sample { background-clip: content-box; }
content-box
グラデーション
背景にグラデーションを使用するにもbackground-image
を使います。
線形グラデーションを指定するにはlinear-gradient()
を指定します。
<div class="sample">sample</div>
.sample { background-image: linear-gradient( dodgerblue, yellow ); }
円形グラデーションを指定するにはradial-gradient()
を指定します。
<div class="sample">sample</div>
.sample { background-image: radial-gradient( #fd0, #05b ); }