エフェクト
mask-repeat
mask-repeat は、マスクの画像をくり返して敷き詰めるかどうかと、その並べ方を指定します。初期値の repeat はタイルのようにくり返すので、1 つだけ置くときは no-repeat にします。
構文<repeat-style># …
<repeat-style>#
<repeat-style> = repeat-x | repeat-y
| [ repeat | space | round | no-repeat ]{1,2}プレビュー
プリセット
右下の角をドラッグするとサイズを変えられます
コード
.box {
background: linear-gradient(
135deg,
#88d1c7,
#77a7d7,
#eaac3a
);
mask-image: url(/mask-star.svg);
mask-size: 36px;
mask-repeat: space;
}コントロール
mask-repeatspace
横と縦を同じ値にする
解説
並べ方は background-repeat と同じ
repeat:領域を覆うまでくり返します。初期値です。端に収まりきらない画像は途中で切れます。space:切れずに収まる枚数だけ並べ、余った長さを画像どうしのすき間に均等に配ります。round:割り切れないときは画像を伸び縮みさせて、ちょうどの枚数で並べます。no-repeat:くり返さず、1 枚だけ置きます。
2 つ書くと、1 つ目が横、2 つ目が縦の並べ方になります。repeat-x は repeat no-repeat、repeat-y は no-repeat repeat と同じ意味です。それぞれの細かい決まりは background-repeat のページで説明しています。
すき間では要素が消える
マスクの画像が無い所は、透明なマスクとして扱われます。そのため space のすき間や、no-repeat で置いた画像の周りでは、要素そのものが見えなくなります。背景画像のすき間に背景色が見えるのとは違います。
気をつけること
- 初期値が
repeatなので、mask-sizeを小さくしたり、元の大きさが小さい画像を使ったりすると、思いがけず敷き詰められます。アイコンの形に 1 つだけ切り抜くならno-repeatにします。 spaceとroundが枚数を合わせるのは、マスクを置く領域(mask-origin、初期値は border の外側まで)です。padding までを基準にする背景とは違います。- カンマで区切ると、
mask-imageの層ごとに指定できます。 -webkit-の付かない名前に対応したのは、Chrome・Edge は 120、Safari は 15.4 からです。それより古いブラウザには-webkit-mask-repeatと書きます。- このページのプレビューでは、星の画像を 36px の大きさでマスクにしています。箱の右下をドラッグして大きさを変えると、
spaceとroundの枚数が変わるのを確かめられます。