对使用SVG Sprite图标的SVG对象进行动画处理

达尼科伦

我有一个包含2个符号的SVG精灵,第二个符号使用第一个符号。我需要将其分离为精灵,因为我使用图标的次数要多于一次。

我的问题是我无法按照所需的方式为对象设置动画,希望有人可以提供帮助。基本上它是一个带有图标的按钮,一旦单击它,我就将缩放比例更改为20%,并为颜色过渡和笔触过渡设置为不同颜色的动画。目前,我设法通过jquery引用了各个符号部分,但由于我理解它应该是一个独立的对象,因此我认为它的方法不正确。

基本上,我需要在单击时缩放比例+过渡色填充+过渡色笔触的按钮。

$('#shape2').on('click', function(a, v, b) {

  $(this).velocity({
    scale: 0.99,
    duration: 100,
    complete: function() {
      $(this).velocity({
        scale: 1.4
      }, {
        duration: 1000
      });
       //i don't want to do this, i want to access it as an object (this), but i cannot
      $("#icon_2").find('circle').velocity({
        fill: '#00b2ff',
        duration: 1000,
        complete: function() {
          $("#icon_1").find("path").velocity({
            stroke: "#fff",
            queue: false
          }, 1000);
        }
      });
    }
  });
})
.st0 {
  fill: none;
  stroke: #0083ED;
  stroke-miterlimit: 5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.2/velocity.js"></script>
<svg width="0" height="0">
  <defs>
    <symbol id="icon_1" viewBox="0 0 50 50" class="st0">
      <path d="M10.6 29.3h14.5V44H10.6z" />
      <path d="M25 29.3h14.5V44H25zm-7.2-14.7h14.5v14.7H17.8zm0 0l3.9-4m10.6 4l3.9-4m-3.9 18l3.9-3.7m-25.6 4.4l4.3-4.4m24.6 4.7l3.9-4M39.5 44l3.9-4M21.2 10.6h15M14.5 24.9h3.3m17.7.6h7.9M36.2 10v15.5m7.2.1V40" />
    </symbol>
    <symbol id="icon_2">
      <circle cx="50" cy="50" r="48" fill="#dcf2f8" stroke="white" stroke-width="2" />
      <use x="7" y="5" width="80" height="80" xlink:href="#icon_1"></use>
    </symbol>
  </defs>
</svg>


<!--                s     v         g     ---------------------------------  -->


<svg width='100' height='100' id="shape2">
  <use xlink:href="#icon_2"></use>
</svg>
<!--                s     v         g     ---------------------------------  -->

保罗·勒博

旨在预定义符号,然后按原样重用它们。您无法定义符号并为其创建不同的实例。换句话说,您不能以多种方式重设同一符号的样式。

因此,如果您可能在页面上多次使用同一符号,那么符号就不是您想要的。

如果放弃符号,则可以使用以下内容来实现所需的功能。

$('#shape2').on('click', function(a, v, b) {

  $this = $(this);
  // Animate the SVG's size. Since it has a viewBox, everything inside gets scaled too
  $this.velocity({scale: 1.4, duration: 1000});
  // Animate the icon colours
  $this.find("circle").velocity({fill: '#00b2ff'});
  $this.find(".st0").velocity({stroke: "#fff"});

})
.st0 {
  fill: none;
  stroke: #0083ED;
  stroke-miterlimit: 5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.2/velocity.js"></script>

<svg width='100' height='100' id="shape2" viewBox="0 0 50 50">
  <circle cx="25" cy="25" r="24" fill="#dcf2f8" stroke="white" stroke-width="2" />
  <g class="st0" transform="translate(3.5, 2.5) scale(0.8)">
    <path d="M10.6 29.3h14.5V44H10.6z" />
    <path d="M25 29.3h14.5V44H25zm-7.2-14.7h14.5v14.7H17.8zm0 0l3.9-4m10.6 4l3.9-4m-3.9 18l3.9-3.7m-25.6 4.4l4.3-4.4m24.6 4.7l3.9-4M39.5 44l3.9-4M21.2 10.6h15M14.5 24.9h3.3m17.7.6h7.9M36.2 10v15.5m7.2.1V40" />
  </g>
</svg>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用键盘对UIView进行动画处理

来自分类Dev

尝试对SVG笔画进行动画处理,但没有运气

来自分类Dev

动画SVG在页面加载之前不会进行动画处理

来自分类Dev

对链接的svg进行动画处理不起作用;内联时工作正常

来自分类Dev

使用Jquery对徽标进行动画处理

来自分类Dev

使用Snap.svg对多边形进行动画处理

来自分类Dev

在SVG形状上对笔触进行动画处理无法正常工作

来自分类Dev

使用SVG.js的Bee SVG动画

来自分类Dev

悬停时对SVG进行动画处理

来自分类Dev

使用CSS对SVG中的<g>元素进行动画处理

来自分类Dev

在不更改背景图像比例的情况下对SVG的高度进行动画处理

来自分类Dev

使用变换原点对SVG圆进行动画处理

来自分类Dev

在CSS SVG动画中,我无法对Á对象进行动画处理以遵循路径

来自分类Dev

在省略号路径上使用@keyframes对svg进行动画处理

来自分类Dev

通过CSS过渡对SVG直线进行动画处理

来自分类Dev

使用d3js对SVG路径进行动画处理

来自分类Dev

使用snap.svg沿svg路径对对象进行动画处理和定向

来自分类Dev

使用inkscape的SVG动画

来自分类Dev

使用snap.svg在鼠标悬停时进行动画放大/缩小

来自分类Dev

悬停时对SVG图像蒙版进行动画处理

来自分类Dev

尝试对SVG笔画进行动画处理,但没有运气

来自分类Dev

对链接的svg进行动画处理不起作用;内联时工作正常

来自分类Dev

在IE11中使用CSS对SVG路径进行动画处理

来自分类Dev

在SVG形状上对笔触进行动画处理无法正常工作

来自分类Dev

在屏幕上连续对SVG进行动画处理

来自分类Dev

捕捉SVG:在路径上进行动画处理

来自分类Dev

用速度对svg对象列表进行动画处理

来自分类Dev

使用 RAF 围绕另一个 SVG 圆的圆周对 SVG 圆进行动画处理

来自分类Dev

图标的 SVG 线交叉动画

Related 相关文章

  1. 1

    使用键盘对UIView进行动画处理

  2. 2

    尝试对SVG笔画进行动画处理,但没有运气

  3. 3

    动画SVG在页面加载之前不会进行动画处理

  4. 4

    对链接的svg进行动画处理不起作用;内联时工作正常

  5. 5

    使用Jquery对徽标进行动画处理

  6. 6

    使用Snap.svg对多边形进行动画处理

  7. 7

    在SVG形状上对笔触进行动画处理无法正常工作

  8. 8

    使用SVG.js的Bee SVG动画

  9. 9

    悬停时对SVG进行动画处理

  10. 10

    使用CSS对SVG中的<g>元素进行动画处理

  11. 11

    在不更改背景图像比例的情况下对SVG的高度进行动画处理

  12. 12

    使用变换原点对SVG圆进行动画处理

  13. 13

    在CSS SVG动画中,我无法对Á对象进行动画处理以遵循路径

  14. 14

    在省略号路径上使用@keyframes对svg进行动画处理

  15. 15

    通过CSS过渡对SVG直线进行动画处理

  16. 16

    使用d3js对SVG路径进行动画处理

  17. 17

    使用snap.svg沿svg路径对对象进行动画处理和定向

  18. 18

    使用inkscape的SVG动画

  19. 19

    使用snap.svg在鼠标悬停时进行动画放大/缩小

  20. 20

    悬停时对SVG图像蒙版进行动画处理

  21. 21

    尝试对SVG笔画进行动画处理,但没有运气

  22. 22

    对链接的svg进行动画处理不起作用;内联时工作正常

  23. 23

    在IE11中使用CSS对SVG路径进行动画处理

  24. 24

    在SVG形状上对笔触进行动画处理无法正常工作

  25. 25

    在屏幕上连续对SVG进行动画处理

  26. 26

    捕捉SVG:在路径上进行动画处理

  27. 27

    用速度对svg对象列表进行动画处理

  28. 28

    使用 RAF 围绕另一个 SVG 圆的圆周对 SVG 圆进行动画处理

  29. 29

    图标的 SVG 线交叉动画

热门标签

归档