背景
background
背景を設定する
value | description |
---|---|
rgb(56, 189, 248) | 背景色を設定する |
url("../img/image.png") | 画像を設定する |
linear-gradient(hotpink, blue) | グラデーションを設定する |
no-repeat center/80% url("../img/image.png") | 中央寄せ、80%に縮小した画像を設定する |
Demo
<div class="wrapper">
<div class="box box-1" />
<div class="box box-2" />
<div class="box box-3" />
<div class="box box-4" />
</div>
.box-1 {
background: rgb(56, 189, 248);
}
.box-2 {
background: no-repeat url("/monster.png");
}
.box-3 {
background: linear-gradient(hotpink, blue);
}
.box-4 {
background: no-repeat center/30% url("/monster.png");
}
.box {
width: 100%;
height: 100px;
border-radius: 12px;
border: 1px solid rgb(107, 107, 107);
}
.wrapper {
display: grid;
gap: 12px;
grid-template-columns: repeat(4, 1fr);
}
概要
背景に関する以下のプロパティをまとめて指定するショートハンドです。
ただし実際には複雑な背景を指定する場合はほとんどなく、background: 色名;
の形で背景色を指定する場合が多いでしょう。(background-color
でも良いですが、タイプ数が多いです。)
background-color | 背景色を設定する |
background-image | 背景に画像やグラデーションを設定する |
background-size | 背景画像の伸縮を指定する |
background-position | 背景画像などの位置を設定する |
background-clip | 背景の切り取り方を設定する |
background-repeat | 背景画像などの繰り返しパターンを設定する |
background-attachment | スクロールした場合の挙動を設定する |
background-origin | 背景の描画領域を設定する |
背景関連プロパティ
以下のプロパティは、個別に指定しても良いですし、まとめてbackground
で指定しても構いません。
background-color
背景色を指定する。
background-image
背景画像またはグラデーションを指定する。背景画像は、url(/example.png)
の形で URL を指定します。
画像のサイズと背景領域のサイズが合わない場合、デザインが崩れる可能性がある。
これは後述の background-size
やbackground-repeat
などで調整する。
グラデーションの指定方法についてはこちらをご覧ください。
background-size
背景画像の伸縮を指定します。contain
とcover
の違いを押さえておけば良いでしょう。
※ contain
のみ、background-repeat: no-repeat;
を指定しています。
value | description |
---|---|
contain | 背景画像全体が領域内に収まるように配置されます。縦横比によっては余白が生じますが、必ず画像全体が表示されます。 |
cover | 領域全体が画像で覆われるように配置されます。余白が生じませんが、画像の一部が切り取られる場合があります。 |
50% | 数値が 1 つ指定された場合、画像の横幅になります |
30px 10px | 数値が 2 つ指定された場合、1 つ目が画像の横幅、2 つ目が画像の高さになります |
cover
は画像の一部が入りきらなくても一定のサイズで表示したい場合に有効です。サムネイル画像などで用いられます。
background-position
背景画像の位置を指定します。
※ 最初の 2 つはbackground-size: cover;
、後半二つはbackground-repeat: no-repeat
を指定しています。
value | description |
---|---|
center | 背景画像を中央に合わせます |
top | 背景画像を、領域の上辺に合わせます |
right | 背景画像を、領域の右辺に合わせます |
bottom | 背景画像を、領域の下辺に合わせます |
left | 背景画像を、領域の左辺に合わせます |
25% 75% | 数値が 2 つ指定された場合、領域の左上からの X 座標・Y 座標になります。 |
bottom 12px right 24px | 各辺からの距離で指定します |
background-clip
画像の切り取り方を指定します。
通常このプロパティを設定することはほぼありませんが、文字の塗りに写真やグラデーションを利用する際のテクニックでbackground-clip: text;
が用いられます。
value | description |
---|---|
border-box (default) | 枠線が背景の上に重なる形になります。 |
padding-box | 背景を枠線の内側までに制限します |
content-box | 背景をpadding の内側までに制限します |
text | 背景画像を、テキストが重なっている部分に制限します |
テキストで切り抜くテクニック場合は以下のスタイルを利用します。
<div class="wrapper">
<div class="box-1 box">
TEXT
</div>
<div class="box-2 box">
TEXT
</div>
</div>
.box-1 {
background: url(/maritozzo.png) center;
background-size: cover;
/** @@ */
background-clip: text;
/* Chromeではベンダープレフィックスが必要 */
-webkit-background-clip: text;
/* 背景を見せるため、テキストは透明にする */
color: transparent;
/** /@@ */
}
.box-2 {
background: linear-gradient(
64.3deg,
rgba(254, 122, 152, 0.81) 17.7%,
rgba(255, 206, 134, 1) 64.7%,
rgba(172, 253, 163, 0.64) 112.1%
);
/** @@ */
background-clip: text;
/* Chromeではベンダープレフィックスが必要 */
-webkit-background-clip: text;
/* 背景を見せるため、テキストは透明にする */
color: transparent;
/** /@@ */
}
.box {
font-size: 96px;
font-weight: 900;
text-align: center;
width: 100%;
height: 150px;
}
.wrapper {
display: flex;
}
background-repeat
背景画像の繰り返しを指定します。繰り返しをさせたくない場合は、no-repeat
を指定します。
no-repeat
のみ押さえておけば良いでしょう。
value | description |
---|---|
repeat (default) | 背景を繰り返します |
no-repeat | 背景の繰り返しを行いません |
repeat-x | x 軸方向へのみ、繰り返しを行います |
repeat-y | y 軸方向へのみ、繰り返しを行います |
space | 繰り返しを行いますが、端で画像が途中で切れないようにスペースで調整されます |
background-attachment
スクロールした場合の挙動を設定する。
<div class="wrapper">
<div class="box box-1">
<div class="inner">
<div class="title">fixed</div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
<div class="box box-2">
<div class="inner">
<div class="title">local</div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
<div class="box box-3">
<div class="inner">
<div class="title">scroll</div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
</div>
.box-1 {
background-attachment: fixed;
}
.box-2 {
background-attachment: local;
}
.box-3 {
background-attachment: scroll;
}
.box {
background-image: url(/maritozzo.png);
overflow-y: scroll;
height: 9rem;
width: 12rem;
word-break: break-all;
border-radius: 4px;
border: 1px solid rgb(229, 231, 235);
padding: 16px;
text-align: center;
font-family: monospace;
font-size: 14px;
color: white;
}
.inner {
background: rgba(128, 128, 128, 0.498);
backdrop-filter: blur(2px);
}
.wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12px;
}
.title {
font-size: 18px;
font-weight: 700;
}
value | description |
---|---|
fixed | 背景をビューポート(画面)に対して固定します |
local | スクロールに応じて背景も移動する |
scroll | スクロールしても背景は固定されたまま |