CSS Masks
mask-image プロパティでグラデーションやSVG・PNG画像をマスクとして使い、要素の透明度を部分的に制御する。clip-path が切り抜き形状を定義するのに対し、mask はアルファチャンネルで段階的な透明度を表現できる。フェードアウト効果や複雑な形状のマスクに適している。
概要
mask-image プロパティでグラデーションやSVG・PNG画像をマスクとして使い、要素の透明度を部分的に制御する。clip-path が切り抜き形状を定義するのに対し、mask はアルファチャンネルで段階的な透明度を表現できる。フェードアウト効果や複雑な形状のマスクに適している。
対応ブラウザ
デスクトップ
Chrome 120+
Edge 120+
Safari 15.4+
Firefox 53+
モバイル
Chrome Android 120+
Safari iOS 15.4+
Firefox Android 53+
基本構文
CSS
.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- プレフィックスが必要な場合がある。
- マスク画像の読み込みが遅いと、マスクなしの状態が一瞬表示されることがある。
フォールバック戦略
CSS
/* プレフィックス付きフォールバック */
.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 で隠す。