CSSはどんどん進化している! border-shapeプロパティを使うとボーダーをあらゆる形状に実装できます

CSSで2つの円を線でつなぐボーダーを実装できると思いますか?

可能になりました!
Chrome 147+のアップデートでサポートされたborder-shapeプロパティを使用すると、ボーダーにあらゆる形状(多角形・円など)を設定できます。

border-shapeプロパティを使うとボーダーをあらゆる形状に実装できます

まずは、実際の動作をご覧ください。ドラッグの操作にはJavaScriptが使用されていますが、自由に変形するボーダーはCSSで実装されています。
※Chrome 147+, Edge 147+でご覧ください。

See the Pen
CSSのborder-shapeで直線を曲げる 1
by coliss (@coliss)
on CodePen.

CSSのborder-shapeプロパティは、ボーダーに任意の形状(多角形・円など)を設定できます。clip-pathと同じ形状を作成できますが、clip-pathのマスクとは異なり、border-shapeはボックス自体を再定義するため、その新しい形状に沿って背景や境界線などがすべてが従います。

では、その仕組みを解説します。
まずは、2つの円を「直線」で繋いでみます。JavaScriptは必要ありません、CSSのAnchor Positioning、attr()関数、コンテナクエリ、shape()関数、三角関数を使用します。

HTMLは非常にシンプルです。2つの円と直線をdiv要素で用意します。

動的に変化する位置を制御するのは、CSSで可能です。さらに円間の距離に応じて形状も調整することができます。さらに円が重なった際には直線は消えます。ピュアCSSによる衝突検出です!

実際の動作は、デモページでご覧ください。
円(グリーンとオレンジも)をドラッグすると移動できます。移動に合わせて直線の長さや向きも変化し、円が重なった際には線は消えます。

See the Pen
CSSのborder-shapeで直線を曲げる
by coliss (@coliss)
on CodePen.

これで、円を直線で繋げることができました。続いて、この直線を円間の距離に応じて変化する線を実装します。円に近づくと線は曲がり、遠ざかると伸びて細くなります。もちろん、これもピュアCSSで実装できます!

上記の実装に加えて、border-shapeプロパティとif()関数を使用します。HTMLは上記と同様に、シンプルです。

CSSは下記の通りです。

実際の動作は、デモページでご覧ください。

See the Pen
CSSのborder-shapeで直線を曲げる 1
by coliss (@coliss)
on CodePen.

要素の数はいくつでも設定でき、接続設定(線の長さや曲線の数)も調整可能です。

See the Pen
CSSのborder-shapeで直線を曲げる 2
by coliss (@coliss)
on CodePen.

元ネタは、下記ポストより

sponsors

top of page

©2026 coliss