跳到主要内容

clip-path

2023年02月17日
柏拉文
越努力,越幸运

一、认识


clip-path 属性使用裁剪方式创建元素的可显示区域,区域内的部分显示,区域外的隐藏。

二、语法


/* Keyword values */
clip-path: none;

/* <clip-source> values */
clip-path: url(resources.svg#c1);

/* <geometry-box> values */
clip-path: margin-box;
clip-path: border-box;
clip-path: padding-box;
clip-path: content-box;
clip-path: fill-box;
clip-path: stroke-box;
clip-path: view-box;

/* <basic-shape> values */
clip-path: inset(100px 50px);
clip-path: circle(50px at 0 100px);
clip-path: ellipse(50px 60px at 0 10% 20%);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
clip-path: path('M0.5,1 C0.5,1,0,0.7,0,0.3 A0.25,0.25,1,1,1,0.5,0.3 A0.25,0.25,1,1,1,1,0.3 C1,0.7,0.5,1,0.5,1 Z');

/* Box and shape values combined */
clip-path: padding-box circle(50px at 0 100px);

/* Global values */
clip-path: inherit;
clip-path: initial;
clip-path: revert;
clip-path: revert-layer;
clip-path: unset;

三、取值


3.1 <clip-source>

clip-path: <clip-source>url() 引用 SVG<clipPath> 元素

3.2 <basic-shape>

**``clip-path: basic-shape** 一种形状, 其大小和位置由 geometry-box的值定义。如果没有指定geometry-box,则将使用 border-box` 用为参考框。取值可为以下值中的任意一个:

  • inset(): 定义一个 inset 矩形

  • circle(): 定义一个圆形(使用一个半径和一个圆心位置)

  • ellipse(): 定义一个椭圆(使用两个半径和一个圆心位置)

  • polygon(): 定义一个多边形(使用一个 SVG 填充规则和一组顶点)

  • path(): 定义一个任意形状(使用一个可选的 SVG 填充规则和一个 SVG 路径定义)

3.3 <geometry-box>

clip-path: geometry-box 如果同 basic-shape 一起声明,它将为基本形状提供相应的参考框盒。通过自定义,它将利用确定的盒子边缘包括任何形状边角(比如说,被 border-radius 定义的剪切路径)。几何框盒可以有以下的值中的一个:

  • margin-box: 使用 margin box 作为引用框

  • border-box: 使用 border box 作为引用框

  • padding-box: 使用 padding box 作为引用框

  • content-box: 使用 content box 作为引用框

  • fill-box: 利用对象边界框(object bounding box)作为引用框

  • stroke-box: 使用笔触边界框(stroke bounding box)作为引用框

  • view-box: 使用最近的 SVG 视口(viewport)作为引用框。如果 viewBox 属性被指定来为元素创建 SVG 视口,引用框将会被定位在坐标系的原点,引用框位于由 viewBox 属性建立的坐标系的原点,引用框的尺寸用来设置 viewBox 属性的宽高值。

3.4 none

clip-path: none 不创建剪切路径。

注意

CSS 计算值不为 none 时,会创建新的层叠上下文,就像 CSS opacity 的值不为 1 时那样。