对 SVG 组进行动画处理

2023-12-24

我目前有以下 SVG:

<svg class="tower owner" height="60" width="60" viewBox="0 0 300 300">
    <g transform="translate(75 75)" opacity="1">
        <ellipse class="border" cx="0" cy="0" fill="#222" rx="65" ry="65" stroke-width="5"></ellipse>
        <g class="rotatable" style="transform: rotate(5.497787143782138rad); transition: transform 2s;">
            <rect fill="#aaa" height="50" stroke-width="7" stroke="#181818" width="40" x="-20" y="-80"></rect>
            <rect fill="#555" height="58" rx="12" ry="10" width="78" x="-39" y="-25"></rect>
            <rect fill="#ffe56d" height="46.4" y="-13.399999999999999" rx="12" ry="12" width="78" x="-39"></rect>
        </g>
    </g>
</svg>

我目前正在动画旋转g.rotatable不过我想用<animateTransform>如果可以的话,我还没想出如何做。

我尝试将它放在组的开头、底部,甚至在它之后,但是没有任何影响。

    <animateTransform attributeName="transform" attributeType="XML" dur="5s" keyTimes="0;0.4;0.75;1" repeatCount="indefinite" type="rotate" values="315deg;90deg;200deg;315deg" calcMode="linear"></animateTransform>

由于我从未真正使用过 SVG 或对其进行动画处理,因此我不确定我哪里出错了。

svg.tower .rotatable {
    animation: tower 5s linear infinite;
}

@keyframes tower {
    0% {
        transform: rotate(315deg);
    }
    40% {
        transform: rotate(90deg);
    }
    75% {
        transform: rotate(200deg);
    }
    100% {
        transform: rotate(315deg);
    }
}

上面是我当前的 CSS 动画。

谁能告诉我哪里出错了,这样我就可以纠正我的错误,或者如果有可能的话,这样我就可以放弃这条行动路线。


Note:您可能需要重新考虑使用 SMIL 动画而不是 CSS 动画,因为Chrome 从 v45 开始不再支持 SMIL 动画 https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_animation_with_SMIL.

您的代码中有两个问题,如下所示:

  1. The rotate transform https://developer.mozilla.org/en/docs/Web/SVG/Attribute/transform in SVG just takes the degree number as value and doesn't need the deg suffix to be added to it. In addition a transform origin can also be specified (2nd and 3rd param) but it is not mandatory.
  2. 有一个style='transform: rotate(...)' on the .rotatable元素。 CSS 会覆盖animateTransform所以你看不到任何旋转。避免这种情况style环境。如果需要初始旋转,您可以使用 SVGtransform属性。

下面是一个工作演示:

<svg class="tower owner" height="60" width="60" viewBox="0 0 300 300">
  <g transform="translate(75 75)" opacity="1">
    <ellipse class="border" cx="0" cy="0" fill="#222" rx="65" ry="65" stroke-width="5"></ellipse>
    <g class="rotatable" transform="rotate(315)">
      <rect fill="#aaa" height="50" stroke-width="7" stroke="#181818" width="40" x="-20" y="-80"></rect>
      <rect fill="#555" height="58" rx="12" ry="10" width="78" x="-39" y="-25"></rect>
      <rect fill="#ffe56d" height="46.4" y="-13.399999999999999" rx="12" ry="12" width="78" x="-39"></rect>
      <animateTransform attributeName="transform" attributeType="XML" dur="5s" keyTimes="0;0.4;0.75;1" repeatCount="indefinite" type="rotate" values="315;90;200;315" calcMode="linear"></animateTransform>
    </g>
  </g>
</svg>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 SVG 组进行动画处理 的相关文章

  • 添加自定义 CSS 到 Jekyll

    我是 Jekyll 新手 我正在按顺序使用自定义 html 和 css 制作一个网站 Jekyll 默认下载 minima 主题 所以我用以下 html 覆盖了主页 all my html
  • 旋转嵌套 SVG

    我在用SVG js http svgjs com并尝试使用 SVG 进行一些操作 我以前使用过 canvas 但我对其生成的图像质量非常失望 因此我决定使用纯 SVG 我设法将所有内容都改为纯 SVG 方法 除了一件事 旋转 我无法让它发挥
  • Firefox 30 不再隐藏选择框箭头

    我一直使用的 技巧 是 select moz appearance none text indent 0 01px text overflow 在 FF 上进行自定义选择框 但自从版本 30 发布以来 它完全停止工作 我试图找出这是否已被弃
  • 避免滚轮被嵌入的 youtube / flash 视频劫持

    我正在对主页中嵌入 YouTube 视频的网站进行一些改进 我自己没有添加此代码 但它看起来像
  • Chrome 扩展:插入固定 div 作为 UI

    我想使用 chrome 扩展将 div 插入固定位置 它将覆盖您当前正在查看的页面 我担心的是 我希望它可以在任何页面上工作而不改变它 除了插入我的固定 div 之外 但我不知道我这样做的方式是否可行 目前 该按钮不会显示 并且我在让 di
  • 将较新版本的 WebKit 嵌入 Android 应用程序

    我正在使用 Web 技术开发 Android 应用程序 CSS 转换 对于应用程序的功能非常重要 因为它们负责滚动和滑动页面 非常缓慢 根据互联网上找到的信息 CSS 过渡不是硬件加速的 除非进行 3 维转换 我发现很多文章说我应该放置 w
  • 如何在滚动时保持这些 tagHover 的位置靠近标签并且 tagHover 具有固定位置?

    https plnkr co edit PuP3f71kCjkqgjjMkgNS p preview https plnkr co edit PuP3f71kCjkqgjjMkgNS p preview 下面还有一个 stackoverfl
  • 如何使用div绘制曲线?

    我需要使用 CSS 绘制两条曲线 我尝试过组装一些divs 使用CSSborder radius绘制弧形面板 但结果很糟糕 还有更好的算术吗 正如我之前在评论中提到的 请不要使用CSS用于实现复杂的曲线和形状 虽然仍然可以使用 CSS 来实
  • CSS3 转换会立即发生吗?

    我有一个名为 artwork需要动画化 artwork webkit transition all 20s ease in transition all 20s ease in width 75 display block margin 0
  • 我如何在 viewDidLoad 中执行 UIView animateWithDuration ? IOS 7

    我在 viewDidAppear 中尝试这个 但我有一秒钟的延迟 我能做什么 在 viewDidLoad 中工作 void viewDidAppear BOOL animated fullRotation CABasicAnimation
  • 如何设置引导开关的 css 颜色?

    如何在此引导开关中将蓝色更改为另一种颜色 我尝试更改输入元素的颜色和背景颜色 但它没有更改开关颜色 这是 html 和 bootstraplink https getbootstrap com docs 4 2 components for
  • 响应式 CSS 图像锚点标签 - 图像地图样式

    我一直在开发一个响应式网站 并且在图像映射方面遇到了一些问题 图像映射似乎不适用于基于百分比的坐标 经过一番谷歌搜索后 我发现了一个 JS 解决方法 http mattstow com experiment responsive image
  • CSS 中 calc() 的结果是什么

    我们现在已经开始使用calc 在CSS中 用于设置计算结果的宽度 例如 div div div div parent width 100px calcWidth width calc 100 3px height 100px backgro
  • 显示带有背景颜色的百分比条

    例如 如果我有一个包含两列和 2 行的表 Col1 Percentage 50 50 70 70 如何用代表 COl1 值的颜色填充百分比列 像这样的东西 您可以使用具有两个紧接着的停止点的线性渐变 percentageFill heigh
  • 在 IE10 中禁用捏合放大

    在 IE10 触摸模式下 我希望仅使页面的特定部分可缩放 其余的不应该 我找到了这个 http msdn microsoft com en US library ie hh772044 aspx http msdn microsoft co
  • Symfony 2 使用 CSS 设置背景图片

    I want to put a background image for a menu in symfony But I can t figure out how to do it I managed to style a lot of t
  • 如何在 Bootstrap 列中使用文本溢出?

    假设我有一行具有固定高度 并且我在其列中插入了一些文本 如果太长 我希望将其剪掉 并在行尾添加三个点 如下所示 我在用着文本溢出 省略号 我的行中有此属性 但无法使其工作 JsFiddle http jsfiddle net Alexnot
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 两种颜色边框

    客户想要两种颜色的边框以获得浮雕外观 我可以在一个元素上执行此操作吗 我希望避免堆叠两个具有单独边框的 DOM 元素 是的 使用outline财产 它充当您边界之外的第二个边界 但请注意 它可能会以一种奇怪的方式与边距 填充和阴影进行交互

随机推荐

  • 使用 python 中的 csv 模块写入特定单元格

    我必须向 csv 文件中的特定单元格 例如第 8 个单元格 写入一个值 我可以看到有一个csvwriter writerow row 方法来写入整行 但我没有看到任何将值写入特定单元格的内容 The csv模块 http docs pyth
  • 使用现有 R 会话中的对象运行 Sweave 或 knit

    假设我有一个对象x在我当前的会话中 x lt 1 如何在 Sweave 或 knit 文档中使用此对象 而无需显式分配它 documentclass article begin document lt lt gt gt print x en
  • 如何自动启动 AlarmManager 来启动计划活动?

    本教程来自android er http android er blogspot com 2011 05 using alarmmanager to start scheduled html 主活动 AndroidScheduledActi
  • 在 Android 中改造没有值的 GET

    我在大多数调用中都使用 Retrofit 但在其中一种情况下 我在参数中提供了完整路径 我的网址是这样的http www example com android json http www example com android json
  • css 字体大小和行高与基线不匹配

    我正在尝试做一些应该非常简单的事情 但我在失败和论坛之间度过了一天 我想调整我的字体以匹配我的基线 在 indesign 中只需点击一下即可 但在 css 中这看起来是地球上最困难的事情 让我们举一个有理值的简单例子 在这张图片上 我每 2
  • Theano 张量切片...如何使用布尔值进行切片?

    在 numpy 中 如果我有一个布尔数组 我可以用它来选择另一个数组的元素 gt gt gt import numpy as np gt gt gt x np array 1 2 3 gt gt gt idx np array True F
  • 如何重用多处理池?

    底部是我现在拥有的代码 看起来效果很好 但是 我并不完全理解它 我以为没有 join 我冒着在池完成执行之前代码进入下一个 for 循环的风险 我们不需要那 3 行注释掉的行吗 另一方面 如果我要和 close and join 方式 有什
  • 影响数据库的 Angular e2e 测试

    这是我的问题 一步一步 我认为这样读起来更好 不像一堵文字墙可怜地试图解释我的特定领域的问题 1 我们有一个Angular js应用程序与PHP后端支持MongoDB贮存 2 Protractor用于端到端测试 3 需要测试改变数据库的页面
  • C# HttpWebRequest POST 不发送参数

    我正在尝试使用下一个代码执行带有参数的 POST 请求 我正在使用本地 php 脚本来接收参数 但是当我执行请求时 php 脚本没有接收从我的 C 函数发送的参数 它说 注意 未定义索引 detalle 注意 未定义索引 method pa
  • Glassfish - 上传图像 - 正确执行

    我使用的是最新的 glassfish 3 1 2 所以不需要 apache FileItem 并且 getPart 没有错误 我读到上传图像的最佳实践是将它们保存在文件系统上 请参阅here https stackoverflow com
  • 如何查看包的历史记录?

    如何查看 Npm 注册表中包的历史记录 我特别想知道什么时候https npmjs org package npm https npmjs org package npm1 1 2版本发布 你可以做npm view npm您可以在以下位置找
  • 删除as3中的空格

    如何从 as3 中的字符串中删除空格 我希望能够删除所有回车符 空格 制表符等 您可以使用正则表达式 var rex RegExp s r n gim var str String This is a string str str repl
  • 即使 Ant 任务失败,Ant 也会成功

    我一定缺少一个简单的设置 所以请原谅我 但我有两次注意到我的坏蚂蚁任务不会导致构建失败 例如 当源文件不存在时 Ant 复制 构建成功 Ant 解压缩 当任务报告 无法写入文件 或类似消息时 构建成功 Ant 执行错误 语法无效 构建成功
  • 如何在WPF中叠加图像?

    我有两个图像需要重叠 例如 我需要在实心矩形顶部有一个实心圆 所以 我可以看到整个圆 但只能看到矩形的角 我不希望圆圈是透明的 原本的circle png没有矩形边框 它的边界仅沿着圆的边界 因此 理想情况下 整个圆不应与矩形重叠 这是显示
  • 员工工资查询错误

    我正在尝试制作一家公司的薪资报告 我想通过使用如下查询来显示该公司的所有员工 select tab1 name tab1 job tab1 salary tab2 discount days tab1 salary tab1 salary
  • cmd中转义特殊字符

    我有一个 Windows bat 脚本 在其中尝试运行参数中包含密码的命令 我希望能够使用的密码是 gt lt 从我读到的here http ss64 com nt syntax esc html 我应该逃走 lt gt with 根据我的
  • glDrawArrays 上的 OpenGL ES EXC_BAD_ACCESS

    我在 OpenGL ES 1 1 中为我正在构建的 iPhone 游戏进行渲染时遇到问题 简而言之 我正在渲染 3 个项目 背景 效果很好 许多球形物体 效果很好 一个改变大小的简单线圆 我在这里遇到问题 基本上 当我在圆上调用 drawA
  • 如何生成 Identity Server 签名证书

    在身份服务器示例中 我们发现这样的代码Startup cs var certFile env ApplicationBasePath idsrv3test pfx var signingCertificate new X509Certifi
  • C++ 二进制文件和迭代器:使用 ifstreambuf_iterator 摆脱 1:1 的束缚?

    这个答案 https stackoverflow com a 13665583 2485710指出 C 不太适合对二进制文件进行迭代这一事实 但这正是我现在所需要的 简而言之 我需要以 二进制 方式操作文件 是的 所有文件都是二进制的 即使
  • 对 SVG 组进行动画处理

    我目前有以下 SVG