CSS角デザインの進化:border-radiusからcorner-shapeへ
border-radiusプロパティが登場した時、ウェブ開発者は5つの背景画像を組み合わせる苦痛から解放されました。しかし15年経った今、私たちが持っていた選択肢は依然として「丸い角」だけでした。ベベル(面取り)角、スクイッグル(iPhoneアプリアイコンのような)角、凹んだスクープ角を作るには、clip-pathやSVGマスクなどの複雑な回避策が必要でした。今、CSS corner-shapeプロパティがその限界を打ち破ります。このプロパティはborder-radiusの相棒として、既存の角丸の「形状」を変形させます。詳細はSmashing Magazineのcorner-shapeプロパティ紹介記事をご参照ください。
corner-shapeが重要な理由
日本のウェブ制作現場では、クライアントのデザイン要求がますます精巧になっています。アプリのようなウェブ、出版物的な感性のウェブを求めるケースが増え、「プレミアム」な印象が重要視されています。corner-shapeは、こうした要求をCSSネイティブプロパティで解決できる実用的なツールです。特に**プログレッシブエンハンスメント(Progressive Enhancement)**のアプローチが核心で、全てのブラウザで動作する基本デザインを作成し、サポートブラウザでのみ強化された体験を提供する方式です。これは日本でもまだシェアの高い旧式ブラウザ環境を考慮する際、必須のアプローチと言えます。

corner-shapeプロパティの使い方と実践例
corner-shapeはborder-radiusと一緒に使用する必要があります。border-radiusの値が角の「大きさ」を決めるなら、corner-shapeはその角丸の「曲線形状」を決定します。
基本値と使用方法
/* 個別の角に異なる形状を指定 */
.element {
border-radius: 20px;
corner-shape: bevel round scoop squircle;
/* 左上、右上、右下、左下の順 */
}
/* スクイッグル(超楕円)角 - iOSアプリアイコン風 */
.card {
border-radius: 25px;
corner-shape: squircle;
}
/* ベベル(面取り)角 */
.badge {
border-radius: 8px;
corner-shape: bevel;
}
/* スクープ(凹型)角 - 編集デザイン風 */
.featured-card {
border-radius: 24px;
corner-shape: scoop;
}
/* ノッチ(内側に切り込んだ)角 */
.tag {
border-radius: 6px;
corner-shape: notch;
}
プログレッシブエンハンスメントパターン
全てのブラウザで動作する基本デザインを最初に作り、@supportsで強化されたスタイルを追加するのが賢明な方法です。
/* 基本レイヤー - 全てのブラウザ */
.product__badge {
border-radius: 0 4px 4px 0;
background-color: var(--badge-color);
}
/* 強化レイヤー - corner-shapeサポートブラウザのみ */
@supports (corner-shape: bevel) {
.product__badge {
padding: 0.35rem 1.4rem 0.35rem 1rem;
border-radius: 0 16px 16px 0;
corner-shape: round bevel bevel round; /* リボン形状 */
}
}
このパターンは、基本機能を保証しながら高度な機能を追加する現代的なアプローチと通じるものがあります。

実践適用時の注意点と限界
1. ブラウザサポート状況
| ブラウザ | サポート状況 | 備考 |
|---|---|---|
| Chrome 139+ | ✅ | Chromiumベースブラウザ含む |
| Firefox | ❌ | まだ未サポート |
| Safari | ❌ | まだ未サポート |
| Edge 139+ | ✅ | Chromiumベースなのでサポート |
日本での実践適用のコツ: 日本はモバイル環境の比重が高く、Android WebViewのバージョンも多様です。@supports検出と基本フォールバックデザインを徹底的に適用する必要があります。決してcorner-shapeに依存したレイアウトを設計しないでください。
2. パフォーマンスとアニメーション
corner-shapeの値はsuperellipse()関数の数値に変換され、アニメーション可能です。ただし、複雑な形状や多すぎる要素への適用は、ペインティングパフォーマンスに影響を与える可能性があります。
/* 滑らかな形状遷移アニメーション */
.btn {
border-radius: 12px;
corner-shape: bevel;
transition: corner-shape 0.3s ease;
}
.btn:hover {
corner-shape: squircle;
}
3. デザインシステムへの統合
企業のデザインシステムにcorner-shapeを統合する際は慎重であるべきです。全てのコンポーネントに無差別に適用するのではなく:
- プレミアムカードには
scquircle - タグ/バッジには
bevelまたはnotch - 特別強調要素には
scoopのように用途に合わせたガイドラインを作成することが望ましいです。

結論:次の学習ステップ
corner-shapeは単なる装飾的プロパティではありません。これはCSSの表現力が一段階進化したことを示す信号弾です。今後より多くのブラウザがサポートするこのプロパティを実務に適用する際は:
- プログレッシブエンハンスメントの哲学を守ってください。全てのユーザーに基本的な良い体験を提供することが最優先です。
- デザイントークンとして管理してください。
--corner-shape-squircle: squircle;のようなCSS変数で定義すると、メンテナンスが容易になります。 - アクセシビリティを考慮してください。過度に独特な角デザインがコンテンツ認識の妨げにならないように注意してください。
この技術の発展は、既存のインフラの上に新しい可能性を積み上げていくパラダイムと類似しています。基本(border-radius)はそのまま維持しながら、サポート環境ではより豊かな表現(corner-shape)を提供することが、賢明なウェブ開発者の姿勢です。
CSSの進化は止まりません。corner-shapeに慣れたら、次はborder-shapeプロパティが私たちを待っているかもしれません。