关于 gabrielobholz-corner-smoothing
gabrielobholz-corner-smoothing 是一项用于生成 Apple/iOS 风格平滑圆角的设计技能,面向实现相关形状的开发者。它采用路径几何而非单纯增大 CSS 圆角,并说明半径约束、布局稳定和路径动画。
主要功能
- 01按尺寸生成平滑圆角路径
- 02支持 SVG、CSS、Canvas 和 WebGL
- 03半径限制为短边的一半
- 04默认以 60% 作为 Apple 风格目标
- 05动画仅更新路径
适用场景
- 01实现 Figma 风格的平滑圆角
- 02为 DOM 或 SVG 矩形生成路径
- 03在 Canvas 或 WebGL 绘制形状
- 04避免圆角动画改变布局尺寸
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gabrielobholz/ corner-smoothing-skill --skill gabrielobholz-corner-smoothing安装后在 Claude Code 中输入/gabrielobholz-corner-smoothing确认已加载。
附带文件agents/openai.yamlreferences/implementation.md
详细介绍
Apple 圆角平滑
当设计需要 Apple/iOS 风格的圆角平滑效果时,尤其是常见的 Figma 圆角平滑度 60% 效果,请使用基于路径的几何形状。仅靠 CSS border-radius 无法表达这种形状。
快速参考
| 需求 | 使用方式 |
|---|---|
| DOM/SVG 矩形 | 根据宽度、高度、半径和平滑度生成 <path d="..."> |
| 纯 CSS 组件 | 可以接受时使用 clip-path: path("..."),否则使用内联 SVG |
| Canvas/WebGL | 使用相同的超椭圆采样点作为多边形/路径 |
| 与 Figma 效果一致 | 将 60% 作为 Apple/iOS 风格的目标值 |
| 普通圆角 | 使用 smoothing: 0 |
可复制粘贴的代码请参阅 implementation.md。
核心原则
1. 不要用更大的半径来伪造效果
增大 border-radius 会改变半径,而不是圆角过渡效果。Apple 风格的平滑效果会保持半径不变,同时平缓直边与圆角之间的过渡。
2. 优先使用路径
使用 SVG 路径数据、clip-path: path(...)、Canvas Path2D 或框架专用的矢量路径。这可以避免布局技巧、嵌套蒙版、伪元素和异常边缘情况。
3. 限制半径范围
始终将半径限制为 min(width, height) / 2。这样可以防止组件变小或调整响应式布局时路径发生自相交。
4. 将 60% 作为 Apple 风格的目标值
当用户要求 Apple/iOS 风格的圆角但未指定其他数值时,请使用 smoothing: 60。普通圆形 border-radius 使用 0%,只有需要最大程度的风格化效果时才使用 100%。
5. 保持布局不变
平滑路径只应影响绘制/裁剪。为平滑度添加动画时,不要更改元素的宽度、高度、内边距或布局尺寸。
6. 为路径添加动画,而不是为方框添加动画
为平滑度添加动画时,保持 width、height 和 radius 不变,只更新生成的路径。如果还要为标签或数字添加动画,请使用固定尺寸的容器和等宽数字。
实现工作流
- 读取指定的宽度、高度、半径和平滑度百分比。
- 如果目标可以使用 SVG,则渲染
<path>并设置其d属性。 - 如果目标必须使用 HTML/CSS,仅在浏览器支持和缩放效果均可接受时使用
clip-path: path(...);否则将 SVG 放在元素后方或前方。 - 除非用户指定其他数值,否则 Apple/iOS 风格使用
smoothing: 60。 - 在小尺寸和最大半径下进行验证。
常见错误
| 错误 | 修正方法 |
|---|---|
使用 border-radius: 52px 并称之为平滑效果 | 生成平滑路径 |
| 半径大于方框的一半 | 限制半径范围 |
| 平滑动画期间布局发生变化 | 保持布局不变,只更新路径 |
| 使用一次性的路径字符串 | 使用可重复使用的函数,并传入 radius 和 smoothing |
| 默认使用 100% | Apple/iOS 风格使用 60% |
| 使用会模糊边缘的 CSS 蒙版 | 优先使用 SVG 路径或清晰的矢量裁剪 |
检查清单
- 半径已限制为较短边的一半
- 除非另有指定,否则 Apple/iOS 风格使用
smoothing: 60 - 形状基于路径生成,而非仅用
border-radius近似 - 更改平滑度时,宽度、高度和布局均不会发生偏移
- 生成的路径适用于正方形和矩形
- 如果不支持
clip-path: path(),组件有备用方案或可接受的行为