CSS clip-path ジェネレーター

次へ

clip-path を使うと、任意の要素を多角形に切り抜き、SVGオーバーレイなしで形のある画像や非対称なヒーローセクション、吹き出しを作成できます。polygon() の座標を手で書くと計算ミスが起きやすくなります。このジェネレーターは、三角形、ひし形、台形、六角形の4つのプリセット形状に対して正しい clip-path 宣言を出力します。形状を選んで生成し、CSS をコピーしてください。

クリップパスの作成方法

  1. 1

    形状を選ぶ

    三角形、ひし形、台形、六角形の4つのプリセットから1つ選びます。

  2. 2

    CSS を生成する

    ボタンをクリックすると、選択した形状の `clip-path: polygon(...)` ルールが作成されます。

  3. 3

    ルールをコピーする

    結果をコピーしてスタイルシートに貼り付けます。パーセント指定により、形状は要素のサイズに合わせて伸縮します。

  4. 4

    座標を理解する

    数字のペアが頂点1つ分で、要素のボックスに対する角の x 座標と y 座標をパーセントで表します。

  5. 5

    適用する

    `clip-path` はすべてのモダンブラウザの任意の要素で動作し、形状は要素に合わせてスケールします。

5つの形状関数

関数 構文 用途
inset() inset(10% 20% 10% 20% round 8px) インセット付きの長方形クリップ。角を丸めるオプションも利用可能
circle() circle(50% at 50% 50%)
ellipse() ellipse(40% 25% at 50% 50%) 楕円
polygon() polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%) 任意の多角形
path() path("M0 0 L100 0 L50 100 Z") SVG パスデータ(サポートは限定的)

一般的な多角形クリップ

/* Hexagon */
clip-path: polygon(25% 0, 75% 0, 100% 50%, 75% 100%, 25% 100%, 0 50%);

/* Rhombus */
clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);

/* Chevron / arrow pointing right */
clip-path: polygon(0 0, 75% 0, 100% 50%, 75% 100%, 0 100%, 25% 50%);

/* Parallelogram */
clip-path: polygon(20% 0, 100% 0, 80% 100%, 0 100%);

/* Diagonal slice (modern hero section) */
clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);

ヒーローセクションの対角線はおそらく最も広く使用されているものであり、SVGを一切使用せずに現代的な傾斜効果のあるセクションを実現します。

clip-path をアニメーションさせる

clip-path は、両方の状態が同じ形状関数で、同じ数の頂点を持つ限りアニメーションします。4頂点の多角形は別の4頂点の多角形へスムーズに変化しますが、頂点を追加または削除すると補間が崩れます。

.card { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.card:hover { clip-path: polygon(0 5%, 100% 0, 100% 95%, 0 100%); }

これは、出現エフェクト、ホバー時の微妙な変形、ページ遷移などに使えます。

clip-path と overflow: hidden の違い

overflow: hidden はボーダーボックスの長方形でクリップします(border-radius で丸めることも可能)。clip-path は定義した任意の形状でクリップし、影や輪郭を含むすべてをクリップします。影を形状の外側にも表示したい場合、clip-path は適していません。

filter: drop-shadow() を使えば clip-path 要素に形状に沿った影を付け直せますが、処理は遅くなります。

パフォーマンス

clip-path は最新のブラウザで GPU により高速化されるため、アニメーションも滑らかです。例外は path() と非常に複雑な多角形(頂点40個以上)で、一部のブラウザでは CPU レンダリングに切り替わります。

アクセシビリティ

clip-path は表示される部分だけを変更します。スクリーンリーダー、キーボードフォーカス、ポインターイベントは、切り抜かれた形状ではなく要素全体のボックスに従います。画像が星形に切り抜かれていても、alt テキストは通常どおり読み上げられます。ボタンがシェブロン形に切り抜かれていても、クリック判定は見えているシェブロンではなく長方形全体になります。そのため、一見何もない領域を誤ってクリックしてしまうことがあります。

変わった切り抜き形状のボタンでは、要素の幅と高さをぴったり詰めて設定し、当たり判定が表示領域とできるだけ一致するようにしてください。

よくある質問

すべての現代的なブラウザ(Chrome、Firefox、Safari、Edge)はpolygon()circle()ellipse()およびinset()をサポートしています。path()はChrome 88以上、Firefox 97以上、Safari 13.1以上でサポートされています。IEではこれらのコード形式のいずれもサポートされていませんが、現在ほとんどのサイトにおいてその使用頻度は閾値を下回っています。

クリップパスは他のすべての要素とともに影も切り取ります。代わりにfilter: drop-shadow()を使用すると、切り取られた形状を正確に追跡し、影が可視化されます。

同じ形状関数で、同じ数のポイントのみを使用します。4つのポイントを持つ多角形は、別の4つのポイントを持つ多角形としてアニメーション化されます。ポイントを追加または削除したり、関数を変更したり(多角形から円に変換するなど)すると、補間が破れます。

いいえ。ポインターイベントは依然として要素の長方形全体に送られます。星形のボタンでも、透明な角を含めた長方形がクリック領域になります。これが問題になる場合は、::before に pointer-events: none を指定するか、要素のサイズをぴったり詰めて設定してください。

関連ツール