CSS clip-path 生成器
使用 clip-path,您可以将任何元素裁剪成多边形形状,无需 SVG 叠加层即可制作异形图片、非对称首屏区域或对话气泡。手动编写 polygon() 坐标很容易出现计算错误。此生成器可为四种预设形状输出正确的 clip-path 声明:三角形、菱形、梯形和六边形。选择一种形状,生成代码,然后复制 CSS。
如何构建 clip-path
-
1
选择形状
从四种预设形状中选择一种:三角形、菱形、梯形或六边形。
-
2
生成 CSS
点击按钮,工具会为所选形状生成 `clip-path: polygon(...)` 规则。
-
3
复制规则
复制结果并粘贴到样式表中。百分比值可让形状随元素大小自适应。
-
4
读懂坐标
每对数字代表一个顶点:该角在元素盒子中的 x 和 y 位置,以百分比表示。
-
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,或采用尺寸贴合的元素。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
电话号码验证器
根据各国号码规划检查结构,并显示地区、类型以及E.164、国际、国内和RFC 3966格式。
随机颜色生成器
生成 1 到 50 个随机 HEX 颜色,查看色块,复制代码,并用于 CSS、测试或配色探索。
BBCode 转 HTML 转换器
将 BBCode(论坛标记)转换为干净的 HTML。支持格式标签、列表、引用、代码、图片和链接。