信息发布→ 登录 注册 退出

如何为 SVG 路径设置独立旋转中心与差异化动画速度

发布时间:2025-12-29

点击量:

本文介绍如何在不依赖 javascript 的前提下,使用原生 svg `` 为不同 `` 元素分别配置绕固定中心点(如 `80 80`)的旋转动画,并精确控制各自旋转周期(如 1s、3s)。

要实现 SVG 路径围绕统一中心点以不同速度独立旋转,核心在于:将 直接嵌入对应 容器中,并通过 from 和 to 属性明确定义旋转中心坐标。SVG 的 rotate(angle cx cy) 变换默认以视图坐标系原点为基准,但指定 cx 和 cy(如 80 80)即可将旋转锚点精准锁定在画布中心或任意预设位置。

以下是一个完整、可直接运行的示例(已适配您提供的路径数据):


  
  
    
    
  

  
  
    
    
  

关键要点说明:

  • from="0 80 80" 和 to="360 80 80" 中的 80 80 是旋转中心的绝对坐标(单位为 viewBox 坐标),必须与 的 viewBox="0 0 160 160" 匹配,确保所有路径围绕同一视觉中心旋转;
  • 动画绑定在 上,可同时驱动其内部所有子元素(如 ),语义清晰且便于管理;
  • begin="0s" 支持延迟启动(如 "1s"),repeatCount="indefinite" 实现持续循环,也可设为具体次数(如 "3");
  • 所有属性均为声明式,零 JS 依赖,兼容性好(支持 IE9+ 及现代浏览器)。

⚠️ 注意事项:

  • 若路径原始坐标未居中,请先用 调整位置,再添加旋转动画;
  • viewBox 尺寸需覆盖全部路径坐标范围(本例中原始路径坐标达 299.99,故实际需放大 viewBox 或缩放路径——示例已按比例重设为 160×160 并平移适配,确保 80 80 为几何中心);
  • 避免在 内部重复嵌套 ,应统一置于包裹它的 中,防止继承冲突。

通过此方法,你可轻松扩展至 N 条路径,每条路径拥有专属 dur、begin、甚至 keyTimes/values 实现复杂缓动,真正实现「一个中心、多速共舞」的 SVG 动画效果。

标签:# javascript  # java  # js  # svg  # 浏览器  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!