Skip to content

Commit 7a156c3

Browse files
committed
2025/05/15 時点の英語版に同期
1 parent 34fbfe7 commit 7a156c3

File tree

1 file changed

+103
-77
lines changed

1 file changed

+103
-77
lines changed

files/ja/web/css/mask-type/index.md

Lines changed: 103 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
---
22
title: mask-type
33
slug: Web/CSS/mask-type
4+
l10n:
5+
sourceCommit: ce1dfc470d18fa6ba694a5b8bd5c657914e57cc3
46
---
57

68
{{CSSRef}}
79

8-
**`mask-type`**[CSS](/ja/docs/Web/CSS) のプロパティで、 SVG の {{svgElement("mask")}} 要素を*輝度*マスクと*アルファ*マスクのどちらとして扱うかを設定します。これは `<mask>` 要素自身に設定します。
10+
**`mask-type`**[CSS](/ja/docs/Web/CSS) のプロパティで、 SVG の {{svgElement("mask")}} 要素に適用されます。これは、マスクの明度(輝度)またはアルファ (透過率) のどちらのコンテンツを使用するかを定義します。このプロパティは、{{cssxref("mask-mode")}} プロパティによって上書きされる場合があります。 `mask-type` プロパティは、画像マスクやグラデーションマスクには効果はありません。
11+
12+
## 構文
913

1014
```css
1115
/* キーワード値 */
@@ -16,21 +20,47 @@ mask-type: alpha;
1620
mask-type: inherit;
1721
mask-type: initial;
1822
mask-type: revert;
23+
mask-type: revert-layer;
1924
mask-type: unset;
2025
```
2126

22-
このプロパティは、マスクが使用される要素に適用され、同じ効果を持つ {{cssxref("mask-mode")}} プロパティによって上書きされることがあります。アルファマスクは全般的に表示が高速です。
27+
### 値
2328

24-
## 構文
29+
- `alpha`
30+
- : `<mask>` のアルファ(透過率)値を使用することを示します。
31+
- `luminance`
32+
- : `<mask>` の[明度(輝度)値](#明度を理解する)を使用することを示します。
2533

26-
`mask-type` プロパティは以下に示すキーワード値のうちの一つで指定します。
34+
## 解説
2735

28-
### 値
36+
`mask-type` プロパティは、 SVG の `<mask>` 要素にのみ関連します。 `mask-type: luminance` を設定すると、マスクはマスクの各部分の明るさを使用します。 `mask-type: alpha` を設定すると、マスクの各部分の透明度または不透明度を使用します。
2937

30-
- `luminance`
31-
- : 関連付けられたマスク画像が輝度マスクであることを示すキーワードです。すなわち、適用時に[相対輝度](https://en.wikipedia.org/wiki/Luminance_%28relative%29)値が使用されます。
32-
- `alpha`
33-
- : 関連付けられたマスク画像がアルファマスクであることを示すキーワードです。すなわち、適用時に[アルファチャネル](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB)値が使用されます。
38+
### 既定の動作
39+
40+
既定では、 SVG の `<mask>` 要素は `mask-type: luminance` を使用します。これは、マスクコンテンツの色と透過率の両方がマスクに影響することを意味しています。マスクが部分的に不透明になるかどうかは、不透明領域の色の明度によって決まります。
41+
42+
- 完全に不透明な白色領域(輝度 100%)はマスクされ、表示されます。
43+
- 黒(輝度 0%)または完全に透明な領域は切り取られ、表示されません。
44+
- 輝度の値が中間である領域は、マスクの色である輝度と、マスクの各領域のアルファ透過率の両方を反映して、部分的にマスクされます。
45+
46+
### 明度を理解する
47+
48+
`luminance` マスクの不透明度は、次の式を使用して `rgb()` 色の `R`、`G`、`B`、および `A` の値によって決定されます。
49+
50+
`((0.2125 * R) + (0.7154 * G) + (0.0721 * B)) * A`
51+
52+
例えば、色 `green` (`#008000` または `rgb(0% 50% 0% / 1)`)の輝度値は `35.77%` です。単色の `green` の輝度マスクでマスクされた領域は、`35.77%` で表示されます。`mask-type` が `alpha` に設定されている場合、同じ完全不透明の `green` 色でマスクされた領域は `100%` 表示されます。
53+
54+
SVG の `<mask>` 要素に、50% 透明の黒である `fill="rgb(0 0 0 / 0.5)"` が指定されている場合、 `mask-type` が `alpha` に設定されていると、アルファ値が `0.5` (不透明度 50%)であるため、マスクされた要素上の対応する図形は不透明度 50% で表示されます。しかし、`mask-type` の既定値または `luminance` に設定されている場合、マスクされた領域は輝度が `0` であるため、完全に切り取られ、表示されません。
55+
56+
### `mask-mode` の `mask-type` における効果
57+
58+
`mask-type` プロパティが SVG の `<mask>` 要素に設定されている場合、{{cssxref("mask-mode")}} プロパティは、マスクされる要素(マスクを適用する要素)に設定されます。
59+
マスク画像のソースが SVG の `<mask>` でない場合、このプロパティは効果はありません。
60+
61+
`mask-mode` の既定値は `match-source` です。これは、ブラウザーが `<mask>` 要素の `mask-type` 値を使用して、それをどのように解釈するかを決定することを意味します。`mask-mode` が `match-source` 以外の値に設定されている場合、その値が優先され、適用されたマスクの `mask-type` 値を上書きします。
62+
63+
`<mask>` がマスク画像のソースとして定義されており、 `mask-mode` が `match-source` に設定されているか、または既定値である場合、 `mask-mode` は `<mask>` 要素の `mask-type` 値(`luminance` または `alpha`)に解決されます。明示的に設定されていない場合、値は既定の `luminance` になります。
3464

3565
## 公式定義
3666

@@ -42,92 +72,84 @@ mask-type: unset;
4272

4373
## 例
4474

45-
### アルファマスクの設定
75+
### `mask-type` プロパティの使用
76+
77+
この例では、 `mask-type` プロパティの使用方法と、そのさまざまな値の効果について説明します。
4678

4779
#### HTML
4880

81+
マスクされる 2 つの画像が設置されています。2 つの画像は、クラス名以外はまったく同じです。
82+
また、2 つの `<mask>` 要素を含む SVG も含まれています。2 つのマスクは、`id` 値以外はまったく同じです。それぞれのマスクは、緑と白のハート形と、半透明の白と黒で塗りつぶされた円から構成されています。
83+
4984
```html
50-
<div class="redsquare"></div>
51-
<svg
52-
version="1.1"
53-
xmlns="http://www.w3.org/2000/svg"
54-
xmlns:xlink="http://www.w3.org/1999/xlink"
55-
width="0"
56-
height="0">
57-
<defs>
58-
<mask id="m" maskContentUnits="objectBoundingBox" style="mask-type:alpha">
59-
<rect
60-
x=".1"
61-
y=".1"
62-
width=".8"
63-
height=".8"
64-
fill="red"
65-
fill-opacity="0.7" />
66-
</mask>
67-
</defs>
85+
<img
86+
class="alphaMaskType"
87+
src="https://mdn.github.io/shared-assets/images/examples/progress-pride-flag.jpg"
88+
alt="Pride flag" />
89+
<img
90+
class="luminanceMaskType"
91+
src="https://mdn.github.io/shared-assets/images/examples/progress-pride-flag.jpg"
92+
alt="Pride flag" />
93+
94+
<svg height="0" width="0">
95+
<mask id="alphaMask">
96+
<path
97+
d="M20,70 A40,40,0,0,1,100,70 A40,40,0,0,1,180,70 Q180,130,100,190 Q20,130,20,70 Z"
98+
fill="green"
99+
stroke="white"
100+
stroke-width="20" />
101+
<circle
102+
cx="170"
103+
cy="170"
104+
r="40"
105+
fill="rgb(0 0 0 / 0.5)"
106+
stroke="rgb(255 255 255 / 0.5)"
107+
stroke-width="20" />
108+
</mask>
109+
<mask id="luminanceMask">
110+
<path
111+
d="M20,70 A40,40,0,0,1,100,70 A40,40,0,0,1,180,70 Q180,130,100,190 Q20,130,20,70 Z"
112+
fill="green"
113+
stroke="white"
114+
stroke-width="20" />
115+
<circle
116+
cx="170"
117+
cy="170"
118+
r="40"
119+
fill="rgb(0 0 0 / 0.5)"
120+
stroke="rgb(255 255 255 / 0.5)"
121+
stroke-width="20" />
122+
</mask>
68123
</svg>
69124
```
70125

71126
#### CSS
72127

128+
`mask-type` プロパティを `<mask>` 要素に適用し、次に `<mask>` 要素とマスクソースを画像に適用します。
129+
73130
```css
74-
.redsquare {
75-
height: 100px;
76-
width: 100px;
77-
background-color: rgb(128, 128, 128);
78-
border: solid 1px black;
79-
mask: url("#m");
131+
mask#alphaMask {
132+
mask-type: alpha;
80133
}
81-
```
82134

83-
#### 結果
84-
85-
{{EmbedLiveSample('アルファマスクの設定', '100%', '102')}}
86-
87-
### 輝度マスクの設定
88-
89-
#### HTML
90-
91-
```html
92-
<div class="redsquare"></div>
93-
<svg
94-
version="1.1"
95-
xmlns="http://www.w3.org/2000/svg"
96-
xmlns:xlink="http://www.w3.org/1999/xlink"
97-
width="0"
98-
height="0">
99-
<defs>
100-
<mask
101-
id="m"
102-
maskContentUnits="objectBoundingBox"
103-
style="mask-type:luminance">
104-
<rect
105-
x=".1"
106-
y=".1"
107-
width=".8"
108-
height=".8"
109-
fill="red"
110-
fill-opacity="0.7" />
111-
</mask>
112-
</defs>
113-
</svg>
114-
```
135+
mask#luminanceMask {
136+
mask-type: luminance;
137+
}
115138

116-
#### CSS
139+
img.alphaMaskType {
140+
mask-image: url(#alphaMask);
141+
}
117142

118-
```css
119-
.redsquare {
120-
height: 100px;
121-
width: 100px;
122-
background-color: rgb(128, 128, 128);
123-
border: solid 1px black;
124-
mask: url("#m");
143+
img.luminanceMaskType {
144+
mask-image: url(#luminanceMask);
125145
}
126146
```
127147

128148
#### 結果
129149

130-
{{EmbedLiveSample('輝度マスクの設定', '100%', '102')}}
150+
{{EmbedLiveSample("Examples", "", "250")}}
151+
152+
`mask-mode` プロパティの既定値は `match-source` であるため、最初のマスクはアルファチャンネルのみを使用してマスクを定義しています。白と緑は完全に不透明であり、 50% の白と黒の色は、色のアルファ値のみが重要であるため、50% 不透明です。2 つ目の例では、色の輝度を使用してマスクの不透明度を決定しています。白は緑よりも明るく、半透明の白は半透明の黒よりも明るくなります。
131153

132154
## 仕様書
133155

@@ -139,4 +161,8 @@ mask-type: unset;
139161

140162
## 関連情報
141163

142-
- その他のマスクに関するプロパティ: {{cssxref("mask")}}, {{cssxref("mask-mode")}}
164+
- {{cssxref("mask")}}
165+
- {{cssxref("mask-mode")}}
166+
- [CSS マスク入門](/ja/docs/Web/CSS/CSS_masking/Masking)
167+
- [CSS マスク](/ja/docs/Web/CSS/CSS_masking)モジュール
168+
- SVG の {{svgattr("mask-type")}} 属性

0 commit comments

Comments
 (0)