用Javascript制作SVG动画

化身

我目前正在测试不同的选项,以直接在.svg文件中设置SVG文件的动画。现在,我正在使用includet javascript测试动画。问题是,我没有绕原点正常旋转。

我的代码目前看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">


<g>
    <g>
        <path class="bag" fill="#016D49" d="M42.1,45.6c-6.7,0-13.5,0-20.2,0c-0.2,0-0.3-0.1-0.3-0.3c0.4-6.9,0.9-13.8,1.3-20.7c0-0.2,0.2-0.3,0.3-0.3
            c5.9,0,11.7,0,17.6,0c0.2,0,0.3,0.1,0.3,0.3c0.4,6.9,0.9,13.8,1.3,20.7C42.4,45.5,42.3,45.6,42.1,45.6z"/>
    </g>
    <g>
        <path fill="#016D49" d="M27.8,23.1c0-0.2,0.1-0.5,0.1-0.8c0.9-5.3,4.1-5,4.2-5c0,0,3-0.3,4,5c0,0.3,0.1,0.6,0.2,0.8H38
            c0-0.2-0.1-0.5-0.2-0.8c-0.2-0.7-0.4-1.3-0.6-2.1c-1.2-3.1-3-4.7-5.4-4.6c-3.6,0.2-5.1,3.8-5.6,6.6c0,0.3-0.1,0.6-0.1,0.8
            L27.8,23.1L27.8,23.1z"/>
    </g>
</g>
<g id="loadingRing"> 

        <circle  fill="none" stroke="#016D49" stroke-width="0.75" stroke-miterlimit="10" stroke-dasharray="7.0201,7.0201" cx="32" cy="32" r="26.8">

    </circle>
    <script language="JavaScript" type="text/javascript">
var zpos=0;
function turnAround(){
zpos++;
    if(zpos>359)zpos=0;
    var dz=document.getElementById("loadingRing");


    dz.style.transform = "rotate("+zpos+"deg) translate(1%,1%)";

    window.setTimeout("turnAround()", 14);
}
turnAround();
</script>
</g>
</svg>

那我想念的是什么,还是有更好的解决方案?也许可以在svg文件中包含jquery?

提前致谢

阿林·普卡鲁(Alin Purcaru)

也许您应该坚持使用普通的SVG工具,而不要像旋转这样琐碎的事情过分复杂。

我不清楚您想旋转什么,所以我让它们都旋转了:

<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">

<g>
    <g>
        <path class="bag" fill="#016D49" d="M42.1,45.6c-6.7,0-13.5,0-20.2,0c-0.2,0-0.3-0.1-0.3-0.3c0.4-6.9,0.9-13.8,1.3-20.7c0-0.2,0.2-0.3,0.3-0.3
            c5.9,0,11.7,0,17.6,0c0.2,0,0.3,0.1,0.3,0.3c0.4,6.9,0.9,13.8,1.3,20.7C42.4,45.5,42.3,45.6,42.1,45.6z"/>
    </g>
    <g>
        <path fill="#016D49" d="M27.8,23.1c0-0.2,0.1-0.5,0.1-0.8c0.9-5.3,4.1-5,4.2-5c0,0,3-0.3,4,5c0,0.3,0.1,0.6,0.2,0.8H38
            c0-0.2-0.1-0.5-0.2-0.8c-0.2-0.7-0.4-1.3-0.6-2.1c-1.2-3.1-3-4.7-5.4-4.6c-3.6,0.2-5.1,3.8-5.6,6.6c0,0.3-0.1,0.6-0.1,0.8
            L27.8,23.1L27.8,23.1z"/>
    </g>
  <animateTransform attributeName="transform"
                          attributeType="XML"
                          type="rotate"
                          from="360 32 32"
                          to="0 32 32"
                          dur="10s"
                          repeatCount="indefinite"/>
</g>
<g id="loadingRing"> 

        <circle  fill="none" stroke="#016D49" stroke-width="0.75" stroke-miterlimit="10" stroke-dasharray="7.0201,7.0201" cx="32" cy="32" r="26.8">

    </circle>
  
  <animateTransform attributeName="transform"
                          attributeType="XML"
                          type="rotate"
                          from="0 32 32"
                          to="360 32 32"
                          dur="5s"
                          repeatCount="indefinite"/>
  
  </g>
</svg>


在这里,您可以使用带有脚本的版本,这是不切实际的,但是由于您需要它,所以...

dz.setAttribute("transform", "rotate(" + zpos + " 32 32)");

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">


<g>
    <g>
        <path class="bag" fill="#016D49" d="M42.1,45.6c-6.7,0-13.5,0-20.2,0c-0.2,0-0.3-0.1-0.3-0.3c0.4-6.9,0.9-13.8,1.3-20.7c0-0.2,0.2-0.3,0.3-0.3
            c5.9,0,11.7,0,17.6,0c0.2,0,0.3,0.1,0.3,0.3c0.4,6.9,0.9,13.8,1.3,20.7C42.4,45.5,42.3,45.6,42.1,45.6z"/>
    </g>
    <g>
        <path fill="#016D49" d="M27.8,23.1c0-0.2,0.1-0.5,0.1-0.8c0.9-5.3,4.1-5,4.2-5c0,0,3-0.3,4,5c0,0.3,0.1,0.6,0.2,0.8H38
            c0-0.2-0.1-0.5-0.2-0.8c-0.2-0.7-0.4-1.3-0.6-2.1c-1.2-3.1-3-4.7-5.4-4.6c-3.6,0.2-5.1,3.8-5.6,6.6c0,0.3-0.1,0.6-0.1,0.8
            L27.8,23.1L27.8,23.1z"/>
    </g>
</g>
<g id="loadingRing"> 

        <circle  fill="none" stroke="#016D49" stroke-width="0.75" stroke-miterlimit="10" stroke-dasharray="7.0201,7.0201" cx="32" cy="32" r="26.8">

    </circle>
    <script language="JavaScript" type="text/javascript">
var zpos=0;
function turnAround(){
zpos++;
    //if(zpos>359)zpos=0;
    var dz=document.getElementById("loadingRing");


    //dz.style.transform = "rotate("+zpos+"deg 32 32)";
    dz.setAttribute("transform", "rotate(" + zpos + " 32 32)");

    window.setTimeout("turnAround()", 14);
}
turnAround();
</script>
</g>
</svg>

笔记:

  1. 我无法使其与更改style属性一起使用。不知道为什么。
  2. 您无需从359重置为0。无论如何,度数都是通过mod 360计算得出的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用JavaScript制作动画

来自分类Dev

用Javascript制作GIF动画

来自分类Dev

用javascript制作图片动画

来自分类Dev

用JavaScript制作并发的画布动画?

来自分类Dev

用scrollTop制作动画

来自分类Dev

用 css 制作动画

来自分类Dev

用React JS制作动画

来自分类Dev

用画布制作动画方块

来自分类Dev

如何为SVG的某些部分制作动画

来自分类Dev

您可以动态制作SVG动画吗?

来自分类Dev

如何为SVG波动图像制作动画?

来自分类Dev

如何制作JS生成的SVG对象的动画?

来自分类Dev

如何从JS制作蒙版SVG动画?

来自分类Dev

用Python Turtle制作的GIF动画

来自分类Dev

用Shiny动画制作静态图像

来自分类Dev

用python制作弹丸的路径动画

来自分类Dev

用 css 和 jquery 制作圆形动画

来自分类Dev

如何为SVG中的正方形内的圆制作动画(为嵌套的svg制作动画)?

来自分类Dev

用春季动画制作CALayer的动画图

来自分类Dev

Javascript动画-SVG形状消失

来自分类Dev

使用Javascript香草制作动画元素

来自分类Dev

使用JavaScript制作单线图动画

来自分类Dev

使用Glorious JavaScript库制作动画

来自分类Dev

使用纯JavaScript制作吐司动画

来自分类Dev

Javascript增加了动画制作的延迟

来自分类Dev

如何使SVG中的字母可以单独制作动画?

来自分类Dev

使用SVG制作逼真的(正弦)标记动画/抖动

来自分类Dev

如何在svg路径上制作脉冲动画?

来自分类Dev

使用SVG为Circle Border制作动画的特定方法?