讲师中心 微信公众号
AI工具推荐 视频效率加速

SVG的标签怎么用 实现旋转和缩放动画

梦瑶小哥_6995

梦瑶小哥_6995

发布时间:2026-02-01 12:17:44

|

589人浏览过

|

来源于php中文网

原创

<animatetransform>不是SVG标准元素,正确写法是<animateTransform>(T大写),用于对transform属性做旋转、缩放等插值动画,需嵌套在图形元素内并指定type、from、to等属性。

svg的<animatetransform>标签怎么用 实现旋转和缩放动画

SVG 中没有 <animatetransform> 标签

直接说结论:<animatetransform> 不是 SVG 标准元素,浏览器不识别,写进去不会生效,控制台通常也不会报错,只是静默忽略。你查不到它的 MDN 文档,也不能在任何 SVG 1.1 或 SVG 2 规范里找到它。

正确实现旋转和缩放动画要用 <animateTransform>

注意拼写:是 <animateTransform>(首字母大写 T),不是 <animatetransform>。它是 SVG 原生动画元素,专用于对 transform 属性做插值动画。

  • 必须嵌套在目标图形元素(如 <rect>、<circle>、<g>)内部,或作为其兄弟节点配合 targetElement(但更推荐嵌套)
  • attributeName 必须设为 transform
  • type 取值为 rotate、scale、translate 或 skewX/skewY,不能写成 "rotation" 或 "scaleX"
  • from 和 to 的格式要匹配 type:比如 rotate 用角度值(可带中心坐标),scale 用单个数或两个数("2" 或 "2 0.5")
<svg width="200" height="200">
  <rect x="50" y="50" width="40" height="40" fill="#3498db">
    <animateTransform
      attributeName="transform"
      type="rotate"
      from="0 70 70"
      to="360 70 70"
      dur="2s"
      repeatCount="indefinite"
    />
    <animateTransform
      attributeName="transform"
      type="scale"
      from="1"
      to="1.5"
      dur="2s"
      begin="0s"
      repeatCount="indefinite"
      additive="sum"
    />
  </rect>
</svg>

多个变换同时动画的坑:不能共用一个 <animateTransform>

SVG 动画不支持在一个 <animateTransform> 里混合 rotate 和 scale。浏览器只按 type 解析单一变换类型,强行写 from="0 70 70; 1" 会失败。

Json Schema Toolkit
Json Schema Toolkit

使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。

下载
  • 必须拆成多个 <animateTransform> 元素,都作用于 transform
  • 用 additive="sum" 确保它们叠加(否则后一个会覆盖前一个)
  • 注意坐标系:旋转/缩放的中心默认是元素左上角(0 0),要加偏移就得显式写 from="0 70 70" 这样的三元组
  • 如果目标是让元素绕自身中心旋转+缩放,先用 <g transform="translate(70,70)"> 把原点移到中心,再动画,会更可控

现代项目建议优先用 CSS 动画替代 <animateTransform>

<animateTransform> 虽然是原生方案,但存在明显局限:

  • 不支持 easing 函数(只有 linear、paced 等极简选项)
  • 无法与 JS 交互控制(暂停/反转需用 beginElement() 等冷门方法)
  • IE 以外的现代浏览器虽支持,但调试困难,动画状态不可见
  • 缩放时若未设置 transform-origin,CSS 行为更直观

等效的 CSS 写法更灵活:

<svg width="200" height="200">
  <rect class="spin-zoom" x="50" y="50" width="40" height="40" fill="#3498db" />
</svg>

<style>
.spin-zoom {
  animation: rotateScale 2s infinite;
}
@keyframes rotateScale {
  from {
    transform: rotate(0deg) scale(1);
    transform-origin: 70px 70px;
  }
  to {
    transform: rotate(360deg) scale(1.5);
  }
}
</style>

真正需要坚持用 <animateTransform> 的场景只剩:纯静态 SVG 文件(无外链 CSS/JS)、需离线运行、且必须零依赖。

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4224

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

5417

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2342

2024.11.28

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4016

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1275

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1618

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

9523

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

900

2023.09.01

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.8万人学习

CSS教程
CSS教程

共754课时 | 95.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn