1
1
---
2
2
title : mask-type
3
3
slug : Web/CSS/mask-type
4
+ l10n :
5
+ sourceCommit : ce1dfc470d18fa6ba694a5b8bd5c657914e57cc3
4
6
---
5
7
6
8
{{CSSRef}}
7
9
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
+ ## 構文
9
13
10
14
``` css
11
15
/* キーワード値 */
@@ -16,21 +20,47 @@ mask-type: alpha;
16
20
mask-type : inherit;
17
21
mask-type : initial;
18
22
mask-type : revert;
23
+ mask-type : revert-layer ;
19
24
mask-type : unset;
20
25
```
21
26
22
- このプロパティは、マスクが使用される要素に適用され、同じ効果を持つ {{ cssxref (" mask-mode ")}} プロパティによって上書きされることがあります。アルファマスクは全般的に表示が高速です。
27
+ ### 値
23
28
24
- ## 構文
29
+ - `alpha`
30
+ - : `<mask > ` のアルファ(透過率)値を使用することを示します。
31
+ - `luminance`
32
+ - : `<mask > ` の[明度(輝度)値 ](#明度を理解する )を使用することを示します。
25
33
26
- ` mask-type ` プロパティは以下に示すキーワード値のうちの一つで指定します。
34
+ ## 解説
27
35
28
- ### 値
36
+ ` mask-type ` プロパティは、 SVG の `< mask > ` 要素にのみ関連します。 ` mask-type : luminance` を設定すると、マスクはマスクの各部分の明るさを使用します。 ` mask-type : alpha` を設定すると、マスクの各部分の透明度または不透明度を使用します。
29
37
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` になります。
34
64
35
65
## 公式定義
36
66
@@ -42,92 +72,84 @@ mask-type: unset;
42
72
43
73
## 例
44
74
45
- ### アルファマスクの設定
75
+ ### `mask-type ` プロパティの使用
76
+
77
+ この例では、 `mask-type ` プロパティの使用方法と、そのさまざまな値の効果について説明します。
46
78
47
79
#### HTML
48
80
81
+ マスクされる 2 つの画像が設置されています。2 つの画像は、クラス名以外はまったく同じです。
82
+ また、2 つの `<mask > ` 要素を含む SVG も含まれています。2 つのマスクは、`id` 値以外はまったく同じです。それぞれのマスクは、緑と白のハート形と、半透明の白と黒で塗りつぶされた円から構成されています。
83
+
49
84
```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 >
68
123
</svg >
69
124
```
70
125
71
126
#### CSS
72
127
128
+ `mask-type ` プロパティを `<mask > ` 要素に適用し、次に `<mask > ` 要素とマスクソースを画像に適用します。
129
+
73
130
```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 ;
80
133
}
81
- ```
82
134
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
+ }
115
138
116
- #### CSS
139
+ img .alphaMaskType {
140
+ mask-image : url (#alphaMask );
141
+ }
117
142
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 );
125
145
}
126
146
```
127
147
128
148
#### 結果
129
149
130
- {{EmbedLiveSample('輝度マスクの設定', '100%', '102')}}
150
+ {{EmbedLiveSample("Examples", "", "250")}}
151
+
152
+ ` mask-mode ` プロパティの既定値は ` match-source ` であるため、最初のマスクはアルファチャンネルのみを使用してマスクを定義しています。白と緑は完全に不透明であり、 50% の白と黒の色は、色のアルファ値のみが重要であるため、50% 不透明です。2 つ目の例では、色の輝度を使用してマスクの不透明度を決定しています。白は緑よりも明るく、半透明の白は半透明の黒よりも明るくなります。
131
153
132
154
## 仕様書
133
155
@@ -139,4 +161,8 @@ mask-type: unset;
139
161
140
162
## 関連情報
141
163
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