CSS - clip-path

概要

属性名clip-path
<clip-source> | [ <basic-shape> || <geometry-box> ] | none
値の詳細<geometry-box> = margin-box | border-box | padding-box | content-box | fill-box | stroke-box | view-box
初期値none
適用可能要素すべての要素。SVGでは、<defs> とグラフィック要素を除くコンテナ要素
継承継承しない
サポートhttps://caniuse.com/css-clip-path

説明

矩形、円形、楕円形、星型などの領域をクリップ(抜き出し)し、表示します。position:absolute または position:fixed を適用した要素に対してのみ有効です。CSS2 では clip が定義されていましたが、CSS3 からは clip-path に移行する予定です。現時点ではまだ一部のブラウザでしかサポートされていません。Firefox では url() 指定のみサポートしています。

説明
<clip-source>SVGの <clipPath> 要素への URL。例: url(resources.svg#c1)
<basic-shape>polygon() や circle() などの形状関数を指定します。
margin-boxマージンを含めた矩形を指定します。
border-boxボーダーラインを含めた矩形を指定します。
padding-boxパディングを含めた矩形を指定します。
content-boxパディングの内側。コンテント領域の矩形を指定します。
fill-boxオブジェクトバウンディングボックスをリファレンスボックスとして使用します。
stroke-boxストロークバウンディングボックスをリファレンスボックスとして使用します。
view-box直近の SVG ビューポイントをリファレンスボックスとして使用します。
noneクリッピングパスを指定しません。

<basic-shape>

<basic-shape> には下記などを指定します。

rect([<length-percentage> | auto ]{4} [round <border-radius> ]?)

4つの数値は top, right, bottom, left の位置を長さまたはパーセントで指定します。auto を指定すると自動計算されます。round には角の丸さを指定します。

CSS
clip-path: rect(10px 80px 80px 10px round 20%);

polygon([<fill-rule>,]? <x1> <y1>, ...)

<fill-rule> には塗りつぶしルールを nonzero または evenodd で指定します。省略時は nonzero になります。<x1>, <y1> で、マスキングする形状の点を指定します。

CSS
clip-path: polygon(50px 0px, 20px 100px, 100px 40px, 0px 40px, 80px 100px);
clip-path: polygon(nonzero, 50px 0px, 20px 100px, 100px 40px, 0px 40px, 80px 100px);
clip-path: polygon(evenodd, 50px 0px, 20px 100px, 100px 40px, 0px 40px, 80px 100px);

circle([<shape-radius>]? [at <position>]?)

円形を指定します。<shape-radius> には半径を指定します。<position> には中心点を指定します。center は画像の中心を意味します。

CSS
clip-path: circle(50px at center);
clip-path: circle(20px at 30px 30px);

ellipse([<r1> <r2>]? [at <position>]?)

楕円を指定します。<r1>, <r2> には横方向、縦方向の半径を指定します。<position> には中心点を指定します。center は画像の中心を意味します。

CSS
clip-path: ellipse(20px 30px at center);
clip-path: ellipse(20px 30px at 50px 50px);

inset(<shape-arg>{1,4} [round <border-radius>]?)

<shape-arg> には、top, right, bottom, left のオフセットを指定します。<border-radius> には border-radius の値を指定します。

CSS
clip-path: inset(5px 8px 10px 12px round 10px);

path(<path>)

x座標、y座標のポイントを指定してパスを描画します。詳細は SVG:path を参照してください。

CSS
clip-path: path("M35,119 L105,119 127,51 70,10 13,51 35,119");

使用例

CSS
.my-example {
  img {
    width: 100px;
    height: 100px;
  }
  .sample-none {
    clip-path: none;
  }
  .sample-polygon {
    clip-path: polygon(50px 0px, 20px 100px, 100px 40px, 0px 40px, 80px 100px);
  }
  .sample-rect {
    clip-path: rect(10px 90px 90px 10px round 20%);
  }
}
HTML
<div class="my-example">
  <img src="example.png" alt="example" class="sample-none">
  <img src="example.png" alt="example" class="sample-polygon">
  <img src="example.png" alt="example" class="sample-rect">
</div>
表示
sample sample sample

関連項目

clip

リンク