
SVG 元素默认以左上角为旋转原点,直接对 应用 transform: rotate(90deg) 会导致其绕 (0,0) 旋转而移出视口;需显式设置 transform-origin: center(或等价的 50% 50%)使其绕自身中心旋转。
svg 元素默认以左上角为旋转原点,直接对 `
在 SVG 中对图形元素(如
✅ 正确做法是:显式指定 transform-origin 为元素中心。由于该圆的 cx="100"、cy="100",且 SVG 的 viewBox="0 0 200 200",其自然中心即为 (100, 100),可安全使用:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewbox="0 0 200 200"><circle cx="100" cy="100" r="90" stroke="red" stroke-width="20" stroke-dasharray="565.4866776461628" stroke-dashoffset="441.079608564007" stroke-linecap="round" style="transform: rotate(90deg); transform-origin: center;"></circle></svg>
? 提示:transform-origin: center 是 50% 50% 的简写,在 SVG 中语义清晰且兼容性良好(Chrome/Firefox/Safari/Edge 均支持)。若需更精确控制,也可写作 transform-origin: 100px 100px。
⚠️ 注意事项:
- 不要将 transform 应用于
- transform-origin 必须与 transform 同时声明在目标元素上,且需确保该元素已具有明确的渲染尺寸(本例中由 cx/cy/r 和 viewBox 共同定义);
- 若使用 SVG 内联样式(如本例),请确保浏览器支持 SVG 2 的 CSS transform 特性(现代主流浏览器均已支持);
- 替代方案:使用 SVG 原生 transform 属性(如 transform="rotate(90 100 100)"),但该方式不支持 CSS 动画和变量,灵活性较低。
总结:旋转 SVG 图形的关键在于明确定义旋转中心。添加 transform-origin: center 即可让 rotate() 按预期绕元素中心生效,这是实现可维护、可动画化 SVG 变换的最佳实践。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










