
本文详解如何使用 `clippathunits="objectboundingbox"` 实现对 svg 单个 `
在 SVG 开发中,若需对特定
正确解法是启用 objectBoundingBox 坐标系:它将目标元素(被裁剪的
✅ 正确实现步骤
-
为
显式声明 clipPathUnits="objectBoundingBox" (默认为 userSpaceOnUse); -
在
内使用归一化坐标 (0–1 范围),无需关心原始路径的实际坐标; -
将 clip-path 属性绑定到目标
元素 (如 clip-path="url(#cut-off-bottom)")。
以下为关键代码片段(已优化可读性):
<clipPath id="cut-off-bottom" clipPathUnits="objectBoundingBox"> <!-- 裁剪掉底部 10%:即保留 y=0 到 y=0.9 的区域 --> <rect x="0" y="0" width="1" height="0.9" /> </clipPath> <!-- 应用到指定路径 --> <path fill="#96d48d" d="M 50,96.518 11.557,58.073 V 6.195 L 16.05,4.894 ... v 51.878 z" id="path-level" clip-path="url(#cut-off-bottom)" />
? 提示:若需「裁掉顶部 10%」,可改用 ;若需「仅显示中间 50%」,则设 y="0.25" height="0.5"。
⚠️ 注意事项
- objectBoundingBox 仅对被裁剪元素的 几何边界盒(getBBox())生效,不包含 stroke、transform 或非渲染属性影响;
- 若路径含 transform(如缩放/旋转),其 getBBox() 已自动计入变换结果,因此 objectBoundingBox 仍准确;
- 动态 JS 控制时,可直接修改
内 的 height 或 y 属性实现百分比驱动裁剪: const clipRect = document.querySelector('#cut-off-bottom rect'); clipRect.setAttribute('height', '0.85'); // 显示 85% clipRect.setAttribute('y', '0.15'); // 裁去顶部 15%
通过 objectBoundingBox,你无需手动计算路径位置、解析 path 数据或监听重绘事件——SVG 渲染引擎会自动完成坐标映射,真正实现“所见即所裁”的精准控制。










