
マスキングは、残りを隠しながら画面上に要素または画像の選択した部分を表示できる手法です。 Web開発者は、マスクプロパティとSVGマスク要素を介してブラウザでこの手法を使用できます。これらの機能により、画像編集ソフトウェアを使用せずに、ブラウザ内の画像やその他の要素にマスキング効果を表示できます。
この記事では、CSSとSVGマスキング機能を実行していることを示し、現在のブラウザのサポートの問題に関する情報を必ず含めるようにします。
執筆時点では、ほとんどのコードサンプルはWebKitブラウザーでのみ機能しますが、SVGベースのマスクはより広いブラウザのサポートを楽しんでいるようです。したがって、例を試してみたい場合は、ChromeのようなWebKitブラウザを使用することをお勧めします。
キーテイクアウト
CSSおよびSVGでのマスキングにより、CSS「Mask」プロパティまたはSVG `
`要素のいずれかを使用して、要素の選択的な可視性が可能になります。
CSSマスキングは画像、勾配、またはSVG参照を利用できますが、SVGマスキングはベクターグラフィックスでよりコントロールを提供し、色とグラデーションマスクをサポートします。
ブラウザのサポートはさまざまです。CSSマスクは主にWebKitブラウザーでサポートされていますが、SVGマスクはFirefoxやInternet Explorerなどの最新のブラウザ全体でより広い互換性を持っています。
「マスクイメージ」、「マスクモード」、「マスクリピート」、「マスクポジション」、「マスクサイズ」などのマスクプロパティは、個別に設定するか、「マスク」プロパティに組み合わせることができます。便利なため。-
アニメーションやテキストをマスクとして使用するなどの高度なマスキング効果を、CSSとSVGの両方で実現でき、Webデザインの柔軟性と創造性を高めます。
Web上でのマスキング
- クリッピングまたはマスキングを使用して、ウェブ上のマスキング効果を達成できます。
- クリッピングには、画像や要素の上に、円やポリゴンなどの閉じたベクトル形状を敷設することが含まれます。形状の背後にある画像の部分の部分は表示されますが、形状の境界の外側の部分は隠されます。シェイプの境界はクリップパスと呼ばれ、クリップパスプロパティを使用して作成します。
マスキングは、PNG画像、CSSグラデーション、またはSVG要素を使用して行われ、ページ上の画像または他の要素の一部を非表示にします。 CSS Maskプロパティを使用してこれを達成できます
この記事では、CSS MaskプロパティとSVG 要素でのマスキングにのみ焦点を当てます。 -
CSSマスクプロパティ-
マスクは、個々のプロパティ全体のCSS速記のプロパティです。 それらのいくつかをより詳細に詳しく見てみましょう。
マスクイメージプロパティ
マスクイメージプロパティを使用して、要素のマスクレイヤー画像を設定できます。
値なしは、まったく値を設定することと同じではありません。それどころか、それはまだ透明な黒の画像層としてカウントされます。
Mask-ImageをURL値に設定できます。これは、PNG画像ファイルへのパス、SVGファイル、またはSVG 要素への参照です。コンマで区切られた対応する数のURL値を追加することにより、複数のマスク画像レイヤーを設定できます。
ここにいくつかの例があります:
/* masking with two comma-separated values */
.masked-element {
mask-image: url(mask.png), none;
}
/* using external svg graphic as mask */
.masked-element {
mask-image: url(mask.svg);
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これは、
mask1:のIDでsvg 要素を参照する方法です。
.masked-element {
mask-image: url(#mask1);
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
グラデーション画像は、マスクイメージプロパティにも適した値です。
マスクモードプロパティ
.masked-element {
mask-image: linear-gradient(black 0%, transparent 100%);
}
ログイン後にコピー
ログイン後にコピー
マスクモードを使用すると、マスクレイヤーイメージをアルファマスクまたは輝度マスクのいずれかに設定できます。
アルファマスクは、アルファチャネルを備えた画像です。さらに詳しくは、Alphaチャネルは、各ピクセルのデータに含まれる透明性情報です。 Alphaに設定されたMask-Modeプロパティを使用したマスキング操作は、画像のAlpha値をマスク値として使用します。
アルファチャネルの便利な例は、黒くて透明な領域を持つPNG画像です。マスクされた要素は、1つのアルファ値を持つマスク画像の黒い部分を通して表示されます。アルファ値がゼロの透明部分の下の他のすべては隠されます。
このPNG画像をアルファマスクとして使用します:
そして、以下のJPG画像でマスキング操作を実行します:

これが魔法が起こる場所です:

そして、これがブラウザの結果の様子です:
.masked-element {
mask-image: url(alpha-mask.png);
mask-mode: alpha;
}
ログイン後にコピー
輝度マスクは、画像の輝度値をマスク値として使用します。上記のようなPNG画像 - しかし、白い画像は、輝度マスクの良い例です:
マスクの白いピクセルで覆われているマスクをマスクする要素の領域が透けて表示されます。マスクの透明なピクセルで覆われたマスクされた要素の部分は隠されます。

マスクモードプロパティを輝度に設定し、上記の画像をマスクとして使用すると、以前と同じ結果が表示されます。
ここにコードがあります:
マスク繰り返しのプロパティ
マスクリピートは、バックグラウンドリピートのプロパティによく似ています。サイズと位置を設定した後、マスクレイヤー画像のタイルを制御します。
可能な値は次のとおりです
- 繰り返し:マスク層の画像は、利用可能なスペース全体で繰り返されません。
- Repeat-X:マスクレイヤー画像がX座標に沿って繰り返されます。
繰り返しY:マスクレイヤー画像がY座標を繰り返します。-
スペース:マスクレイヤーの画像が繰り返され、利用可能な領域全体で間隔が広がっています。 -
ラウンド:マスク層の画像は、利用可能な領域全体で繰り返されます。整数が利用可能なスペースに収まらない場合、画像は拡大されるまで拡大されます。
-
たとえば、
これは私がマスクとして使用することを意図している画像です:
下のコードスニペットは、マスクリピートプロパティをスペースの値に設定します。

次のマスキング効果をもたらします:
/* masking with two comma-separated values */
.masked-element {
mask-image: url(mask.png), none;
}
/* using external svg graphic as mask */
.masked-element {
mask-image: url(mask.svg);
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
マスクポジションプロパティ
マスクポジションプロパティを使用してマスクレイヤー画像を配置できます。このプロパティを、より馴染みのあるCSSバックグラウンドイメージプロパティに使用するのと同じ値に設定できます。その初期値は中心です。

たとえば、
ビューポートの左上隅にマスク画像レイヤーを配置する場合は、マスクポジションプロパティを
0 0
:
の値に設定します。
これは、上記のコードがブラウザでどのように見えるかです:
上記のマスクポジションプロパティの値を
.masked-element {
mask-image: url(#mask1);
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
100%100%
に変更すると、ビューポートの右下にマスクレイヤー画像が表示されます。

マスクサイズのプロパティ
マスクサイズのプロパティを使用してマスクレイヤー画像のサイズをすばやく設定できます。これは、より馴染みのあるCSSバックグラウンドサイズのプロパティと同じ値を受け入れます。
たとえば、マスクサイズを50%に設定すると、マスクレイヤー画像が全幅の50%に表示されます。

封じ込めるマスクサイズの設定は、マスクレイヤーイメージを最大サイズにスケーリングし、その幅と高さの両方がマスクの位置決め領域内に収まるようにします。
これらのデモが以下のCodepenでアクション中のライブを見ることができます:
codepenのSitePoint(@sitepoint)によるペンCSSマスクの例を参照してください。
マスク層の合成

上記で説明したように、マスクイメージプロパティの各値をコンマで分離することにより、同じ要素に複数のマスク層を使用できます。レイヤーは他のレイヤーの上に積み重ねられ、最後のレイヤーが画面に最初に表示されます。
たとえば
:

/* masking with two comma-separated values */
.masked-element {
mask-image: url(mask.png), none;
}
/* using external svg graphic as mask */
.masked-element {
mask-image: url(mask.svg);
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
上のスニペットでは、
mask2.pngがmask1.pngの上に層状になっています。
マスクコンポジットプロパティでは、次のキーワードの値に応じて、さまざまなマスクレイヤーを組み合わせることができます。
add:
mask2.png
は、- mask1.pngの上に塗装されています
減算:mask2.png
の一部を表示します。ブラウザは標準のキーワードをまだサポートしていないため、少なくとも当面は、対応するコンポジットオペレーターキーワードソースを使用する必要があります。
- Intersect:mask2.pngの一部を表示しますmask1.png。ただし、CSSマスクをサポートする唯一の種類のブラウザであるWebKitブラウザは、非標準のコンポジットソースインキーワードが使用されている場合でも、画面に何も表示されないようです。
除外:- mask1.pngおよびmask2.pngの一部を表示します。これは重複しません。繰り返しますが、標準のキーワードにはまだサポートがないため、CompositingオペレーターXORを使用する方がはるかに良いです。
- 以下のCodepenデモでライブデモをチェックできます:
CodepenでSitePoint(@SitePoint)によるペンCSSマスクの合成を参照してください。
マスクの速記のプロパティ
マスクを使用して、CSSマスキング操作を1回で1回でマスキング操作を制御するすべてのプロパティを設定できます。
これが全マスクの速記です:
マスクオリジンとマスククリップは、より馴染みのあるバックグラウンドオリジンとバックグラウンドクリップのプロパティのように機能します。
マスクの速記のプロパティを並べ替えることはできますが、「/」シンボルで区切られたマスクポジションプロパティの後にマスクサイズのプロパティを設定する必要があります。また、マスクポジションを設定せずにマスクサイズを設定すると、無効な宣言が発生します。
最後に、マスクプロパティで指定できない値は最初のデフォルト値に戻されるため、個々のプロパティをリセットする必要がある場合にマスクを使用すると本当に便利です。
svgマスク要素
スケーラブルなベクトルグラフィックス、または略してSVGは、グラフィックをマークアップするためのXMLベースの言語です。
以上がブラウザでCSSとSVGをマスキングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。