clip-path 学一学

368 阅读2分钟

clip-path 直译过来就是裁剪路径,使用 SVG 或形状定义一个 HTML 元素的可见区域的方法。想象一下你在 PhotoShop 中勾勒路径的场景。MDN 上是这样介绍 clip-path 的:

clip-path 属性可以防止部分元素通过定义的剪切区域来显示,仅通过显示的特殊区域。剪切区域是被 URL 定义的路径代替行内或者外部 svg,或者定义路线的方法例如 circle().。clip-path 属性代替了现在已经弃用的剪切 clip 属性。

基本语法

名称
clip-pathclip-source,basic-shape,geometry-box, none
clip-sourceurl
basic-shapeinset,circle,ellipse,polygon
geometry-boxshape-box,fill-box,stroke-box,view-box

兼容性

clip-path 目前兼容性较差,IE 和 Edge 直接不支持。

示例

基本图形:inset(定义矩形)

语法inset( <length-percentage>{1,4} [ round <border-radius> ]? )

inset()可以传入 5 个参数,分别对应的裁剪位置,前四个参数

  • top

  • right

  • bottom

  • left

第五个参数(可选,圆角)

  • round radius

.class {

clip-path: inset(2em 3em 2em 1em round 2em);

}

基本图形:circle(定义圆)

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

circle()可以传人 2 个可选参数;

  1. 圆的半径,默认元素宽高中短的那个为直径,支持百分比
  2. 圆心位置,默认为元素中心点

如果半径使用百分比:圆的半径 = (sqrt(width^2+height^2)/sqrt(2)) * 百分比

.class {
clip-path: circle(30% at 150px 120px);
}

基本图形:ellipse(定义椭圆)

语法ellipse( [ <shape-radius>{2} ]? [ at <position> ]? )

ellipse()可以传人 3 个可选参数;

  1. 椭圆的 X 轴半径,默认是宽度的一半,支持百分比

  2. 椭圆的 Y 轴半径,默认是高度的一半,支持百分比

  3. 椭圆中心位置,默认是元素的中心点


.class {

clip-path: ellipse(45% 30% at 50% 50%);

}

基本图形:polygon(定义多边形)

语法polygon( <fill-rule>? , [ <length-percentage> <length-percentage> ]# )

fill-rule:可选,表示填充规则用来确定该多边形的内部。可能的值有 nonzero 和 evenodd,默认值是 nonzero

后面的每对参数表示多边形的顶点坐标(X,Y),也就是连接点


.class {

clip-path: polygon(50% 0, 100% 50%, 0 100%);

}

具体实例