本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

CSS shape()完全ガイド — SVGなしで複雑な図形を描く2026年の新手法

目次 · 9項目

shape()関数の登場 — CSSだけで図形を描く時代へ

Webで複雑な図形を表現するには、これまでSVGの <path> 要素やCSS clip-path: path() が主な選択肢でした。しかし、SVGパスの構文(M 0 0 L 100 50 ...)は人間が読み書きするには難解で、レスポンシブ対応も困難という課題がありました。

2026年、CSS Shapes Module Level 2で定義された shape()関数 が主要ブラウザで利用可能に。% や rem、calc() が使えるレスポンシブ対応の図形描画が、CSSだけで実現できるようになりました。

ブラウザ対応状況

2026年2月にBaseline 2026に到達し、主要ブラウザすべてで利用可能です。

ブラウザ対応バージョン
Chrome / Edge135以上
Firefox148以上
Safari18.4以上

Interop 2026の重点項目にも含まれており、クロスブラウザの安定実装が進んでいます。

基本構文

shape( [<fill-rule>]? from <起点>, <コマンド>[, ...] )

clip-path または offset-path プロパティで使用します。

.element {
  clip-path: shape(from 0% 0%, line to 100% 0%, line to 100% 100%, close);
}

シェイプコマンド一覧

コマンド機能例
line to/by直線を描くline to 100% 50%
hline to/by水平線hline to 80%
vline to/by垂直線vline to 100%
curve to/by ... withベジェ曲線curve to 100% 50% with 50% 0%
smooth to/by滑らかな連続曲線smooth to 80% 60%
arc to/by ... of楕円弧arc to 50% 80% of 30%
move to/by描画せずに移動move to 20% 20%
closeパスを閉じるclose

to(絶対座標) と by(相対座標) を切り替えられるのが便利なポイント。相対座標を使えば、基準点からの差分で図形を定義できます。

path()との決定的な違い

特徴shape()path()
単位px, %, rem, calc()等pxのみ
レスポンシブ対応非対応
CSS数学関数calc(), max(), abs()対応非対応
構文CSS標準で読みやすいSVGパス構文(難読)
アニメーションカスタムプロパティで容易制限あり

最大の違いはレスポンシブ対応です。path() はピクセル値しか使えないため、画面サイズに応じた図形の変形ができませんでした。shape() では % や vw が使えるので、コンテナに追従する柔軟な図形が描けます。

実装例

波形クリッピング

.wave-section {
  clip-path: shape(
    from 0% 20%,
    curve to 100% 20% with 25% 0% / 75% 40%,
    vline to 100%,
    hline to 0%,
    close
  );
}

ヘッダーやセクションの境界を波形にするパターン。curve コマンドの制御点を調整するだけで波の形状を変更できます。

ハート型

.heart {
  clip-path: shape(
    from 50% 30%,
    arc to 25% 25% of 25% cw,
    arc to 50% 60% of 40% cw,
    arc to 75% 25% of 40% cw,
    arc to 50% 30% of 25% cw,
    close
  );
  background: #e74c3c;
  width: 200px;
  aspect-ratio: 1;
}

arc コマンドで円弧を組み合わせてハート型を構成。% で定義しているため、width を変えるだけでサイズが追従します。

吹き出し

.speech-bubble {
  clip-path: shape(
    from 0% 0%,
    hline to 100%,
    vline to 70%,
    line to 20% 70%,
    line to 10% 100%,
    line to 15% 70%,
    hline to 0%,
    close
  );
  background: #f0f0f0;
  padding: 1.5rem;
  padding-bottom: 3rem;
}

line コマンドで三角形の「しっぽ」部分を描画。チャットUIやツールチップに応用できます。

フォールバック戦略

未対応ブラウザ向けのフォールバックは @supports で検出できます。

/* 対応ブラウザ向け */
@supports (clip-path: shape(from 0 0, move to 0 0)) {
  .element {
    clip-path: shape(from 0% 0%, /* ... */);
  }
}

/* 未対応ブラウザ向け */
@supports not (clip-path: shape(from 0 0, move to 0 0)) {
  .element {
    border-radius: 50%;
  }
}

2026年4月現在、Baseline 2026に到達しているため、最新バージョンのブラウザであれば問題なく利用できます。ただし、古いバージョンのサポートが必要な場合はフォールバックを用意しましょう。

アニメーションとの組み合わせ

CSSカスタムプロパティと組み合わせることで、図形のアニメーションも実現できます。

@property --wave-height {
  syntax: '<percentage>';
  inherits: false;
  initial-value: 20%;
}

.animated-wave {
  clip-path: shape(
    from 0% var(--wave-height),
    curve to 100% var(--wave-height) with 25% 0% / 75% 40%,
    vline to 100%,
    hline to 0%,
    close
  );
  transition: --wave-height 0.5s ease;
}

.animated-wave:hover {
  --wave-height: 10%;
}

まとめ

CSS shape() は、Web上の図形表現における大きなパラダイムシフトです。

  • SVGの知識が不要: CSSの標準的な構文で複雑な図形を定義
  • レスポンシブ対応: %・rem・calc() が使えるため、画面サイズに追従
  • Baseline 2026到達: 主要ブラウザすべてで利用可能
  • アニメーション対応: CSSカスタムプロパティとの組み合わせで動的な図形も実現

デザインカンプにある「ちょっと凝った図形」を実装するとき、もうSVGエディタを開く必要はないかもしれません。まずは clip-path: shape(...) で簡単な図形から試してみてください。

Web標準の進化に関連して、Webアクセシビリティ対応ガイドも合わせて確認しておくと、アクセシブルなデザインと装飾の両立に役立ちます。

この記事を共有XFacebook
照屋 塁

ITベンチャー創業の元社会人野球選手。変化の早い世の中の波に乗り、世の中に価値あるサービスを出していきたい!と思い会社を設立

この記事のテーマを、自社の次の一歩へ

Webサイトで、実現したいことから。

使う人の目的、必要な機能、更新の体制を整理し、制作・改善で最初に取り組むことを考えます。

  • サイトの目的
  • 機能と使いやすさ
  • 公開後の運用
Web制作・改善を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る・Web制作ガイドを読む
無料ダウンロード

Web制作 費用・発注・集客 完全ガイド【2026年版】

費用相場・制作会社の選び方・集客戦略をPDFにまとめました。

The PDF and newsletter emails are currently in Japanese.

メルマガにも登録されます。いつでも解除可能です。