Loading [MathJax]/jax/input/TeX/config.js
社区首页 >问答首页 >SVG:在animateTransform中使用“旋转”

SVG:在animateTransform中使用“旋转”
EN

Stack Overflow用户
提问于 2018-06-19 04:32:59
回答 1查看 679关注 0票数 4

在来自Lines.svg的文件中,动画在Chrome、Iron、Opera、Vivaldi浏览器中旋转行,没有任何问题。它在Firefox中不起作用。60.0.2或Internet 11.据了解,SMIL不适用于IE或Edge,但我希望找到为什么它不在Firefox中运行。我已经减少了下面的代码行,但是它们仍然在支持动画的浏览器中运行动画。是否有可以实现的CSS替代方案?

代码语言:javascript
代码运行次数:0
复制
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-2.4 -2.1 4.8 4.2" width="800" height="700">

    <title>Line Moire</title>
    <defs>
        <path id="moire_arc_single" d="M 0,0 L 0,2 A 2,2 0 0,0 0.05235,1.99931 L -0.05235,-1.99931 A 2,2 0 0,1 0,-2 L 0,0" stroke="none" fill="black" />
        <g id="moire_arc_group_a">
            <use xlink:href="#moire_arc_single" transform="rotate(  0)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  3)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  6)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  9)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 12)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 15)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 18)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 21)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 24)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 27)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 30)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 33)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 36)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 39)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 42)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 45)" />
            <animateTransform attributeName="transform" type="rotate" from="360" to="0" dur="60s" repeatCount="indefinite"/>
        </g>
        <g id="moire_arc_group_b">
            <use xlink:href="#moire_arc_single" transform="rotate(  0)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  3)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  6)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  9)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 12)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 15)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 18)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 21)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 24)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 27)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 30)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 33)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 36)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 39)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 42)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 45)" />
            <animateTransform attributeName="transform" type="rotate" from="0" to="360" dur="60s" repeatCount="indefinite"/>
        </g>
    </defs>

    <use xlink:href="#moire_arc_group_a" transform="translate(0.2 0)" />
    <use xlink:href="#moire_arc_group_b" transform="translate(-0.2 0)" />
</svg>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 06:10:13

正如Robert所说,Firefox并不通过<use>元素实现克隆动画。最明显的解决办法是先克隆,然后再动画。注意这里使用additive="sum"确保应用了<g>元素上的动画转换和静态转换。

代码语言:javascript
代码运行次数:0
复制
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-2.4 -2.1 4.8 4.2" width="800" height="700">

  <title>Line Moire</title>
    <defs>
        <path id="moire_arc_single" d="M 0,0 L 0,2 A 2,2 0 0,0 0.05235,1.99931 L -0.05235,-1.99931 A 2,2 0 0,1 0,-2 L 0,0" stroke="none" fill="black" />
        <g id="moire_arc_group">
            <use xlink:href="#moire_arc_single" transform="rotate(  0)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  3)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  6)" />
            <use xlink:href="#moire_arc_single" transform="rotate(  9)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 12)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 15)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 18)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 21)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 24)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 27)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 30)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 33)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 36)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 39)" />
            <use xlink:href="#moire_arc_single" transform="rotate( 42)" />
        </g>
    </defs>
    <g transform="translate(0.2 0)">
        <use xlink:href="#moire_arc_group"/>
        <use xlink:href="#moire_arc_group" transform="rotate(45)"/>
        <use xlink:href="#moire_arc_group" transform="rotate(90)"/>
        <use xlink:href="#moire_arc_group" transform="rotate(135)"/>
        <animateTransform attributeName="transform" type="rotate" from="360" to="0" dur="60s" repeatCount="indefinite" additive="sum" />
    </g>
    <g transform="translate(-0.2 0)">
        <use xlink:href="#moire_arc_group"/>
        <use xlink:href="#moire_arc_group" transform="rotate(45)"/>
        <use xlink:href="#moire_arc_group" transform="rotate(90)"/>
        <use xlink:href="#moire_arc_group" transform="rotate(135)"/>
        <animateTransform attributeName="transform" type="rotate" from="0" to="360" dur="60s" repeatCount="indefinite" additive="sum" />
    </g>
</svg>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50928573

复制
相关文章
svg中矩形旋转问题
场景: 矩形绕原始的中心点旋转后,再调整宽高,这个时候原始点其实已经发生变化,但是旋转角度未变,我们需要计算新的原始点。
JadePeng
2021/08/23
8980
一篇文章带你了解SVG <Animation> 动画元素
SVG <Animation> 动画元素用于为SVG图形制作动画。动画元素最初是在同步多媒体集成语言(SMIL)中定义的。在动画中,必须指定属性,运动,颜色,动画的开始时间和动画的持续时间的开始和结束值。
前端进阶者
2021/01/22
3K0
网页中如何使用SVG
① 如果文件中的根元素 带有明确的 height 和 width 属性,则它们会被用作文件的固有尺寸; ② 如果只指定 height 或者 width ,并且 带有 viewBox 属性,那么将用 viewBox 计算宽高比,图像会被缩放已匹配指定的尺寸; ③ 如果 带有 viewBox 属性而没有尺寸,则 viewBox 的 height 和 width 将被视为像素长度。 ④ 没有如何尺寸,浏览器应该为嵌入内容应用默认 HTML 尺寸,通常是 150 像素高,300 像素宽。
奋飛
2021/08/31
1.9K0
网页中如何使用SVG
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/11/30
2.4K0
网页中如何使用SVG
① 如果文件中的根元素 <svg> 带有明确的 height 和 width 属性,则它们会被用作文件的固有尺寸; ② 如果只指定 height 或者 width ,并且 <svg> 带有 viewBox 属性,那么将用 viewBox 计算宽高比,图像会被缩放已匹配指定的尺寸; ③ 如果<svg> 带有 viewBox 属性而没有尺寸,则 viewBox 的 height 和 width 将被视为像素长度。 ④ 没有如何尺寸,浏览器应该为嵌入内容应用默认 HTML 尺寸,通常是 150 像素高,300 像素宽。
奋飛
2021/02/16
1.2K0
网页中如何使用SVG
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/09/30
3.2K0
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/10/01
3.7K0
SVG 图像入门教程
SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
ruanyf
2018/08/09
1.8K0
SVG 图像入门教程
在 kbone 中实现小程序 svg 渲染
2019 年底,微信小程序已经推出了近三个年头,我身边的前端开发者基本都做过至少一次小程序了。很多友商曾打算推动小程序进入 W3C 标准,而微信并不为所动,个人认为,小程序本身在框架设计上称不上「标准」,微信也并没打算做一个「标准的平台」。
binnie
2019/12/11
2.1K0
在 kbone 中实现小程序 svg 渲染
前端-SVG 图像入门教程
SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
grain先森
2019/03/29
2.3K0
前端-SVG 图像入门教程
带你轻松打开SVG动画的大门 - 腾讯ISUX
初学SVG的时候,感觉那一坨一坨的代码难读难懂,现在回过头仔细想想,是因为那时候看文档缺少一些具体的实例,导致学习起来很枯燥。如今SVG已经在前端各个领域都有所作为,无论是项目里的应用还是demo都所
腾讯ISUX
2018/06/29
4380
带你轻松打开SVG动画的大门
初学SVG的时候,感觉那一坨一坨的代码难读难懂,现在回过头仔细想想,是因为那时候看文档缺少一些具体的实例,导致学习起来很枯燥。如今SVG已经在前端各个领域都有所作为,无论是项目里的应用还是demo
练小习
2017/11/30
8980
带你轻松打开SVG动画的大门
初学SVG的时候,感觉那一坨一坨的代码难读难懂,现在回过头仔细想想,是因为那时候看文档缺少一些具体的实例,导致学习起来很枯燥。如今SVG已经在前端各个领域都有所作为,无论是项目里的应用还是demo都所
练小习
2017/12/29
7730
SVG 使用
SVG即Scalable Vector Graphics可缩放矢量图形,使用XML格式定义图形, 主要优势在于可缩放的同时不会影响图片的质量。 SVG 在html 中常用的方法 1.使用<img>元素来嵌入SVG图像 <img src=”http://www.w3school.com.cn/svg/rect1.svg”  width=”300″ /> 2.将SVG图像作为背景图像嵌入 background: url(‘http://www.w3school.com.cn/svg/rect1.svg’) no
用户1197315
2018/01/22
2.5K0
实现加载提示组件
在开发时经常需要用到加载提示,例如发起一个XHR请求时就需要给予用户一个交互的反馈,实现一个加载提示组件,重要的部分已经做出注释。
WindRunnerMax
2020/12/31
6830
三天学会HTML5——SVG和Canvas的使用
在第一天学习了HTML5的一些非常重要的基本知识,今天将进行更深层学习 首先来回顾第一天学习的内容,第一天学习了新标签,新控件,验证功能,应用缓存等内容。 第2天将学习如何使用Canvas 和使用SVG 实现功能 Lab1—— 使用Canvas Canvas 是指定了长度和宽度的矩形画布,我们将使用新的HTML5 JavaScript,可使用HTML5 JS API 来画出各种图形。 初始化 1. 创建HTML页面 <html> <head></head> <body></body> </html> 2.
葡萄城控件
2018/01/10
2.8K0
三天学会HTML5——SVG和Canvas的使用
Power BI异常指标闪烁提示(2)
《Power BI 异常指标闪烁提示》介绍了使用CSS动画将任意图标设置成闪烁模式,以提示指标异常。本文继续这个话题,介绍几种SMIL动画的闪烁效果。至于什么是CSS,什么是SMIL,读者无需深究,只要复制代码能在Power BI复现即可。
wujunmin
2023/09/05
2620
Power BI异常指标闪烁提示(2)
SVG 动画精髓(上)
本文作者:ivweb villainthr TL;DR 本文主要是讲解关于 SVG 的一些高级动画特效,比如 SVG 动画标签,图形渐变,路径动画,线条动画,SVG 裁剪等。 例如:路径动画 图形
腾讯IVWEB团队
2017/07/06
3.6K0
SVG 动画精髓(上)
Android--SVG在安卓系统中的应用
通过使用它的Path标签,几乎可以实现SVG中的其它所有标签,虽然可能会复杂一点,但这些东西都是可以通过工具来完成的,所以,不用担心写起来会很复杂。
aruba
2020/07/03
2.8K0
点击加载更多

相似问题

使用SVG animateTransform在SVG内旋转路径

15

SVG animateTransform反向旋转

12

SVG animateTransform标度keySplines匹配旋转矢量的Y分量

19

用animateTransform动画SVG

12

使用CSS在SVG中目标/选择animateTransform元素

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文