CSSマスク、シェイプ、3Dパースペクティブ

CSSマスク&シェイプ プレイグラウンド

CSSマスク、shape-outside、3Dパースペクティブ(ライブデモ付き)| We.Inc

mask-imageのグラデーションで画像をフェードさせ、SVGマスクで形を切り抜き、shape-outsideで円に沿って文字を回り込ませます。clip-pathとmaskの比較や、3Dパースペクティブのシーン作りも紹介します。

CSSマスクは、画像の透明度を使って要素の一部を隠します。mask-image: linear-gradient(black, transparent)なら下に向かってフェードアウトします。shape-outsideは、隣の文字を長方形ではなく円や多角形に沿って回り込ませます。親にperspectiveを指定すると、回転した子要素に本物の奥行きが生まれます。プレイグラウンドでマスクを作ってコピーしましょう。

目的別の使い分け

まずはマスクのプレイグラウンドから。フェード、スポットライト、切り抜きの形を選び、サンプル画像の上で動かして、-webkit-接頭辞込みのCSSをコピーします。その下には、文字の回り込み、clip-pathとmaskの比較、小さな3Dシーンの編集できる例があり、どれもJavaScriptなしで動作します。

よくある質問

clip-pathとmaskの違いは何ですか?

clip-pathは幾何学的な輪郭を描き、その外側をすべてくっきりと切り落とします。mask-imageは画像やグラデーションを使うので、輪郭をやわらかく、半透明にできます。多角形や円ならclip-pathのほうが簡単で、フェード、ぼかしたスポットライト、ロゴの形の切り抜きにはmaskが適しています。

-webkit-mask-imageはまだ必要ですか?

接頭辞なしのmaskプロパティは2023年後半にBaselineになりました。-webkit-版を併記しても損はなく、古いSafariやChromiumを使う訪問者にも効果が届きます。

shape-outsideが効かないのはなぜですか?

3つの点を確認してください。要素がfloatしていること、幅と高さがあること、形に画像を使う場合は同一オリジンかCORSヘッダー付きで配信されていることです。また、文字はfloatの反対側にしか回り込みません。

スクロールするリストの端をフェードさせるには?

スクロールコンテナにマスクを付けます:mask-image: linear-gradient(to bottom, black 85%, transparent)。最後の数行がフェードアウトし、続きがあることを示します。マスクはコンテンツではなくボックスと一緒に動きます。

perspectiveにはどんな値を指定すべきですか?

見る人からz = 0の平面までの距離です。カードなら600pxから1200px程度が自然に見えます。300pxのような小さい値は奥行きを誇張し、手前の端を強くゆがめます。

マスクが表示部分を決める仕組み

形に沿って文字を回り込ませる

グラデーションマスク:フェードとスポットライト

ブロックの下部をフェードさせる

高さの50パーセントまでは完全に表示し、そこから何もない状態までなめらかにフェードします。

円形のスポットライト

円形グラデーションでやわらかい円を表示し、残りの模様を隠します。

SVGとデータURIのマスク

要素を星形に切り抜く

SVGをデータURIとしてインライン化しているので、追加のファイルは不要です。mask-size: containで星全体をボックス内に収めます。

マスクでアイコンファイルの色を変える

アイコンファイルは形だけを提供し、色はbackground-colorで決まります。1つのSVGで、すべてのテーマとホバー状態に対応できます。

shape-outside:形に沿って回り込む文字

円に沿って文字を回り込ませる

floatはshape-outsideで文字を押しのけ、border-radiusで丸く見えます。shape-marginで余白を加えています。

斜めの多角形に沿って文字を回り込ませる

同じ多角形が、見た目の切り抜き(clip-path)と文字の流れ(shape-outside)の両方を決めています。

clip-pathとmaskの比較

同じ円で、くっきりした輪郭とやわらかい輪郭

左はclip-path: circle()を使っています。右はぼかした輪郭の円形グラデーションマスクで、これはclip-pathにはできません。

clip-pathとmaskの比較

小さな3Dパースペクティブのシーン

共通の3D空間で傾いたカード

ステージにperspective、グループにpreserve-3dを指定して3枚のカードを1つの空間に置き、translateZでそれぞれを異なる奥行きに押し出します。

maskプロパティ一覧

maskの個別プロパティとその役割

円

星

ハート

ブロブ

マスク プレイグラウンド

マスクの種類

直線フェード

スポットライト

SVGシェイプ

マスクを適用した要素。市松模様の部分が隠れている場所です。

方向

完全に表示する範囲

中心 X

中心 Y

不透明な半径

ぼかし

形

マスクのサイズ

CSSをコピー

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る