トップページ  > CSS  > mask-composite

★CSSリファレンス

mask-composite …… 複数マスクの合成方法を指定する
Firefox
広告

mask-compositeプロパティは、複数マスクの合成方法を指定する際に使用します。

mask-imageプロパティの値にカンマ区切りで複数のマスクレイヤーイメージを指定した場合、重なった複数のマスクがどのように合成されるかについて mask-compositeプロパティの値で指定し分けることができます。

このページ内のサンプルでは、マスクレイヤーとして以下の20×20ピクセルの黒丸画像、および、200×200ピクセルのハート画像の2枚を使用します。 いずれも黒丸とハートの図形部分以外は透明にしてあります。

マスク処理対象となる要素は、以下の200×200ピクセルの画像です。

■値

add
結合 … 現在マスクを下層マスクの上に重ねて合体(初期値)
subtract
型抜き … 現在マスクで下層マスクを型抜き
intersect
交差 … 現在マスクと下層マスクが重なった部分だけがマスクとなる
exclude
除外 … 現在マスクと下層マスクが重ならない部分をペイントする

W3Cサイトに掲載されている以下の図が分かりやすいでしょう。

mask-image: circle.svg, rect.svg;
※この例の場合、circle.svgが上層レイヤー、rect.svgが下層レイヤーとなります。

mask-composite: add;

mask-composite: subtract;

mask-composite: intersect;

mask-composite: exclude;

■初期値・適用対象・値の継承

初期値
add
適用対象
すべての要素。 SVGでは、defs要素とすべてのグラフィックス要素を除くコンテナ要素に適用される
値の継承
しない

■使用例

CSSソースは外部ファイル(sample.css)に記述

img.sample0 {
mask-image: url('images/maru20.png'), url('images/heart.png');
}

img.sample1 {
mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: add;
}

img.sample2 {
mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: subtract;
}

img.sample3 {
mask-image: url('images/heart.png'), url('images/maru20.png');
mask-composite: subtract;
}

img.sample4 {
mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: intersect;
}

img.sample5 {
mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: exclude;
}

HTMLソース

<p>
mask-compositeプロパティの指定なし<br>
<img class="sample0" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: add; を指定<br>
<img class="sample1" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: subtract; を指定<br>
<img class="sample2" src="images/uirou.png">
</p>

<p>
mask-image: url('images/heart.png'), url('images/maru20.png'); ※これだけ順序が逆<br>
mask-composite: subtract; を指定<br>
<img class="sample3" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: intersect; を指定<br>
<img class="sample4" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: exclude; を指定<br>
<img class="sample5" src="images/uirou.png">
</p>
↓↓↓

ブラウザ上の表示

mask-compositeプロパティの指定なし

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: add; を指定

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: subtract; を指定

mask-image: url('images/heart.png'), url('images/maru20.png'); ※これだけ順序が逆
mask-composite: subtract; を指定

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: intersect; を指定

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: exclude; を指定

■ベンダープレフィックスを付けた場合の使用例

CSSソースは外部ファイル(sample.css)に記述

img.prefix_sample0 {
-webkit-mask-image: url('images/maru20.png'), url('images/heart.png');
}

img.prefix_sample1 {
-webkit-mask-image: url('images/maru20.png'), url('images/heart.png');
-webkit-mask-composite: add;
}

img.prefix_sample2 {
-webkit-mask-image: url('images/maru20.png'), url('images/heart.png');
-webkit-mask-composite: subtract;
}

img.prefix_sample3 {
-webkit-mask-image: url('images/maru20.png'), url('images/heart.png');
-webkit-mask-composite: subtract;
}

img.prefix_sample4 {
-webkit-mask-image: url('images/heart.png'), url('images/maru20.png');
-webkit-mask-composite: intersect;
}

img.prefix_sample5 {
-webkit-mask-image: url('images/maru20.png'), url('images/heart.png');
-webkit-mask-composite: exclude;
}

HTMLソース

<p>
mask-compositeプロパティの指定なし<br>
<img class="prefix_sample0" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: add; を指定<br>
<img class="prefix_sample1" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: subtract; を指定<br>
<img class="prefix_sample2" src="images/uirou.png">
</p>

<p>
mask-image: url('images/heart.png'), url('images/maru20.png');<br>
mask-composite: subtract; を指定<br>
<img class="prefix_sample3" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: intersect; を指定<br>
<img class="prefix_sample4" src="images/uirou.png">
</p>

<p>
mask-image: url('images/maru20.png'), url('images/heart.png');<br>
mask-composite: exclude; を指定<br>
<img class="prefix_sample5" src="images/uirou.png">
</p>
↓↓↓

ブラウザ上の表示

mask-compositeプロパティの指定なし

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: add; を指定

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: subtract; を指定

mask-image: url('images/heart.png'), url('images/maru20.png');
mask-composite: subtract; を指定

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: intersect; を指定

mask-image: url('images/maru20.png'), url('images/heart.png');
mask-composite: exclude; を指定

広告
Sponsors
広告
MuuMuu Domain!
ドメイン取るならお名前.com
現役エンジニアのオンライン家庭教師【CodeCamp】
サイトに広告を掲載してお小遣いが稼げる!【A8.net】
Node.jsコース
はじめてのプログラミングコース
▲ページ先頭へ
HTMLクイックリファレンスについて
© HTMQ