CSS clip-path 生成器

下一个

使用 clip-path,您可以将任何元素裁剪成多边形形状,无需 SVG 叠加层即可制作异形图片、非对称首屏区域或对话气泡。手动编写 polygon() 坐标很容易出现计算错误。此生成器可为四种预设形状输出正确的 clip-path 声明:三角形、菱形、梯形和六边形。选择一种形状,生成代码,然后复制 CSS。

如何构建 clip-path

  1. 1

    选择形状

    从四种预设形状中选择一种:三角形、菱形、梯形或六边形。

  2. 2

    生成 CSS

    点击按钮,工具会为所选形状生成 `clip-path: polygon(...)` 规则。

  3. 3

    复制规则

    复制结果并粘贴到样式表中。百分比值可让形状随元素大小自适应。

  4. 4

    读懂坐标

    每对数字代表一个顶点:该角在元素盒子中的 x 和 y 位置,以百分比表示。

  5. 5

    应用

    `clip-path` 适用于所有现代浏览器中的任何元素,形状会随元素缩放。

五种形状函数

函数 语法 用途
inset() inset(10% 20% 10% 20% round 8px) 带内缩边距、可选圆角的矩形裁剪
circle() circle(50% at 50% 50%) 圆形
ellipse() ellipse(40% 25% at 50% 50%) 椭圆
polygon() polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%) 任意多边形
path() path("M0 0 L100 0 L50 100 Z") SVG 路径数据(支持有限)

常用多边形剪辑

/* Hexagon */
clip-path: polygon(25% 0, 75% 0, 100% 50%, 75% 100%, 25% 100%, 0 50%);

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

/* Chevron / arrow pointing right */
clip-path: polygon(0 0, 75% 0, 100% 50%, 75% 100%, 0 100%, 25% 50%);

/* Parallelogram */
clip-path: polygon(20% 0, 100% 0, 80% 100%, 0 100%);

/* Diagonal slice (modern hero section) */
clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);

主视觉区块的斜切线可能是所有用法中最常见的,它能在不使用任何 SVG 的情况下,让区块呈现出带有角度的现代外观。

为 clip-path 添加动画

只要两个状态具有相同的形状函数且点数相同,clip-path 就能实现动画过渡。一个四顶点多边形可以平滑地过渡到另一个四顶点多边形;添加或删除顶点则会破坏插值过程。

.card { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.card:hover { clip-path: polygon(0 5%, 100% 0, 100% 95%, 0 100%); }

适用于显现效果、细微的悬停变形或页面过渡。

clip-path 与 overflow: hidden 的区别

overflow: hidden 裁剪至边界框(border-box)的矩形(可用 border-radius 进行圆角处理);clip-path 则裁剪至你定义的任意形状,并裁剪所有内容,包括阴影和轮廓。若需要让阴影在形状外部仍然可见,那么 clip-path 并不适合。

filter: drop-shadow() 可为使用 clip-path 的元素重新添加跟随形状的阴影,但速度较慢。

性能

在现代浏览器中,clip-path 会经过 GPU 加速,因此带动画的 clip-path 也很流畅。例外是 path() 以及顶点数超过 40 个的超复杂多边形,在部分浏览器中会回退到 CPU 渲染。

可访问性

clip-path 只改变可见的部分。屏幕阅读器、键盘焦点和指针事件仍以元素的完整盒子为准,而非裁剪后的形状。若图像被裁剪成星形,其 alt 文本仍会正常朗读;若按钮被裁剪成人字形(chevron),其点击目标是整个矩形,而非可见的人字形,这可能导致用户误点看似空白的区域。

对于裁剪形状不规则的按钮,应将元素的宽度和高度设置得尽量贴合,使点击区域(hitbox)与可见区域大致吻合。

常见问题

所有现代浏览器(Chrome、Firefox、Safari、Edge)均支持 polygon()circle()ellipse()inset()path() 在 Chrome 88+、Firefox 97+ 和 Safari 13.1+ 中受支持;IE 不支持其中任何一项,但如今其使用率对大多数网站而言已低于临界值。

因为 clip-path 会连同其他所有内容一起把阴影裁剪掉。请改用 filter: drop-shadow(),它会跟随裁剪后的形状,并让阴影保持可见。

只能在形状函数相同且点数相同的情况下进行。一个四点多边形会过渡为另一个四点多边形。添加或删除点,或在不同函数之间切换(例如从多边形切换为圆形),都会破坏插值。

不会,指针事件仍然作用于元素的完整矩形区域。星形按钮的点击区域仍是矩形,包含透明的边角。如果这一点很重要,可以考虑在 ::before 上使用 pointer-events: none,或采用尺寸贴合的元素。

相关工具