CSS Masks
mask は CSS の一括指定プロパティで、画像の指定した領域をマスクまたはクリップして、要素を(部分的にまたは完全に)非表示にします。これは、すべての mask-* プロパティの一括指定です。このプロパティは、カンマで区切られた 1 つ以上の値を受け入れ、各値は <mask-layer> に対応します。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 120 | 120 | 53 | 15.4 | 120 | 15.4 | |
| その他 | ||||||
| mask-clip は CSS のプロパティで、マスクが影響する領域を指定します。要素の描画されるコンテンツはこの領域に制限されます。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| CSS プロパティ | ||||||
border 非標準 | 1 | 79 | | 4 | 18 | 3.2 |
content 非標準 | 1 | 79 | | 4 | 18 | 3.2 |
padding 非標準 | 1 | 79 | | 4 | 18 | 3.2 |
text 非標準 | 1 | 79 | | 4 | 18 | 3.2 |
| その他 | ||||||
| mask-composite は CSS のプロパティで、現在のマスクレイヤーとその下のマスクレイヤーとの間で使われる合成操作を表します。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| CSS プロパティ | ||||||
add | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
exclude | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
intersect | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
subtract | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| その他 | ||||||
| mask-image は CSS のプロパティで、要素のマスクレイヤーとして使用する画像を設定し、マスク画像のアルファチャンネルと、 mask-mode プロパティの値に応じて、マスク画像の色の輝度に基づいて、マスク画像が設定されている要素の領域を非表示にします。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| CSS プロパティ | ||||||
multiple mask images 複数のマスク画像 | 1 | 18 | 53 | 4 | 18 | 3.2 |
svg masks SVGマスク | 8 | 18 | 53 | 4 | 18 | 3.2 |
| その他 | ||||||
| mask-mode は CSS のプロパティで、マスクされる要素に設定します。 mask-image で定義されたマスクを、輝度とアルファマスクのどちらで扱うかを設定します。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| CSS プロパティ | ||||||
alpha | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
luminance | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
match-source | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| その他 | ||||||
| mask-origin は CSS のプロパティで、マスクの原点を設定します。このプロパティは、マスクの位置決め領域、つまりマスク画像が配置される領域を決定します。 HTML 要素は、コンテンツの境界ボックス、パディングボックス、またはコンテンツボックス内にマスクを含めることができますが、 SVG 要素(関連付けられた CSS レイアウトボックスを持たないもの)は、塗りつぶし、ストローク、またはビューボックス内にマスクを含めることができます。 複数の行にまたがるテキストの span など、複数のボックスとしてレンダリングされる要素の場合、 mask-origin プロパティは、マスクの位置指定領域を決定するために box-decoration-break プロパティが運営するボックスを指定します。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| CSS プロパティ | ||||||
border 非標準 | 1 | 79 | | 15.4 | 18 | 15.4 |
content 非標準 | 1 | 79 | | 15.4 | 18 | 15.4 |
fill-box | 120 | 120 | 53 | | 120 | |
padding 非標準 | 1 | 79 | | 15.4 | 18 | 15.4 |
stroke-box | 120 | 120 | 53 | | 120 | |
view-box | 120 | 120 | 53 | | 120 | |
| その他 | ||||||
| mask-position は CSS プロパティで、定義されたマスク画像それぞれについて、 mask-origin で設定されたマスク位置レイヤーに対する初期位置を設定します。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| mask-repeat は CSS プロパティで、マスク画像をどのように繰り返すかを設定します。マスク画像は水平軸、垂直軸、両方の軸で繰り返すか、まったく繰り返さないようにすることができます。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
| mask-size は CSS のプロパティで、指定したマスク画像のサイズを指定します。マスク画像のサイズは、そのaspect ratioを維持するために、完全にまたは部分的に制約することができます。 | 120 | 120 | 53 | 15.4 | 120 | 15.4 |
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (120)
- プロパティが認識されている間は、それに適用された値は何の効果もありません。
- 接頭辞付きプロパティは、わずかに異なる構文を使用して SVG および HTML で使用でき、非標準の `-webkit-mask-attachment` プロパティを設定できます。
- ベンダープレフィックス付きで対応: -webkit- (1)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (120)
- このバージョンで機能が削除されました (79)
- プロパティが認識されている間は、それに適用された値は何の効果もありません。
- 接頭辞付きプロパティは、わずかに異なる構文を使用して SVG および HTML で使用でき、非標準の `-webkit-mask-attachment` プロパティを設定できます。
- ベンダープレフィックス付きで対応: -webkit- (79)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (53)
- `mask: url(file.svg#mask_id)` または `mask: url(#mask_id)` のみをサポートします。ここで、URL は SVG `<mask>` 要素への参照です。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (15.4)
- プロパティが認識されている間は、それに適用された値は何の効果もありません。
- 接頭辞付きプロパティは、わずかに異なる構文を使用して SVG および HTML で使用でき、非標準の `-webkit-mask-attachment` プロパティを設定できます。
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (120)
- プロパティが認識されている間は、それに適用された値は何の効果もありません。
- 接頭辞付きプロパティは、わずかに異なる構文を使用して SVG および HTML で使用でき、非標準の `-webkit-mask-attachment` プロパティを設定できます。
- ベンダープレフィックス付きで対応: -webkit- (18)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (15.4)
- プロパティが認識されている間は、それに適用された値は何の効果もありません。
- 接頭辞付きプロパティは、わずかに異なる構文を使用して SVG および HTML で使用でき、非標準の `-webkit-mask-attachment` プロパティを設定できます。
- ベンダープレフィックス付きで対応: -webkit- (2)
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (79)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (3.2)
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- このブラウザでは部分的にしか実装されていません
- `-webkit-mask-clip` を使用する場合にのみ機能します。
- 異なるキーワードを使用する同様の非標準プロパティについては、「-webkit-mask-composite」も参照してください。
- 異なるキーワードを使用する同様の非標準プロパティについては、「-webkit-mask-composite」も参照してください。
- このバージョンで機能が削除されました (79)
- ベンダープレフィックス付きで対応: -webkit- (53)
- 異なるキーワードを使用する同様の非標準プロパティについては、「-webkit-mask-composite」も参照してください。
- 異なるキーワードを使用する同様の非標準プロパティについては、「-webkit-mask-composite」も参照してください。
- 異なるキーワードを使用する同様の非標準プロパティについては、「-webkit-mask-composite」も参照してください。
- ベンダープレフィックス付きで対応: -webkit- (1)
- バージョン 8 から、Chrome はグラデーション値のサポートを追加しました。 当初、Chrome はグラデーションの「-webkit-」接頭辞付きの値 (「-webkit-linear-gradient()」など) のみをサポートしていました。 その後、接頭辞のない値のサポートが追加されました。
- このバージョンで機能が削除されました (79)
- ベンダープレフィックス付きで対応: -webkit- (79)
- ベンダープレフィックス付きで対応: -webkit- (4)
- 当初、Safari はグラデーションの「-webkit-」接頭辞付きの値 (「-webkit-linear-gradient()」など) のみをサポートしていました。 その後、接頭辞のない値のサポートが追加されました。
- ベンダープレフィックス付きで対応: -webkit- (18)
- バージョン 18 から、Chrome Android はグラデーション値のサポートを追加しました。 当初、Chrome Android は、グラデーションの「-webkit-」接頭辞付きの値 (「-webkit-linear-gradient()」など) のみをサポートしていました。 その後、接頭辞のない値のサポートが追加されました。
- ベンダープレフィックス付きで対応: -webkit- (3.2)
- 当初、iOS 上の Safari は、グラデーションの「-webkit-」接頭辞付きの値 (「-webkit-linear-gradient()」など) のみをサポートしていました。 その後、接頭辞のない値のサポートが追加されました。
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (79)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (3.2)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (3.2)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (3.2)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (3.2)
- ベンダープレフィックス付きで対応: -webkit- (1)
- このバージョンで機能が削除されました (79)
- ベンダープレフィックス付きで対応: -webkit- (79)
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- ベンダープレフィックス付きで対応: -webkit- (1)
- このバージョンで機能が削除されました (79)
- ベンダープレフィックス付きで対応: -webkit- (79)
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- ベンダープレフィックス付きで対応: -webkit- (4)
- このバージョンで機能が削除されました (79)
- ベンダープレフィックス付きで対応: -webkit- (79)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
基本構文
.fade-out {
mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
}
.shaped {
mask-image: url("mask-shape.svg");
mask-size: cover;
mask-repeat: no-repeat;
}
.text-reveal {
mask-image: linear-gradient(to right, black 50%, transparent 50%);
mask-size: 200% 100%;
transition: mask-position 0.5s ease;
}
.text-reveal:hover {
mask-position: -100% 0;
} ライブデモ
実務での使いどころ
-
フェードアウト効果
コンテンツの下端をグラデーションマスクで徐々に透明にし、「もっと見る」UIを実現する。
-
画像の形状マスク
SVGやPNG画像をマスクとして使い、写真を任意の形状で表示する。
注意点
- 一部ブラウザでは -webkit-mask- プレフィックスが必要な場合がある。
- マスク画像の読み込みが遅いと、マスクなしの状態が一瞬表示されることがある。
フォールバック戦略
/* プレフィックス付きフォールバック */
.fade-out {
-webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
} アクセシビリティ
- マスクで視覚的に隠されたコンテンツはスクリーンリーダーに読み上げられるため、不要なコンテンツは aria-hidden で隠す。