永兴集团(中国区)官方网站-Macau App Station

400-800-9385
网站建设资讯详细

如何使用SVG制作跳动的心脏动画

发表日期:2022-09-30 10:35:13   作者来源:冯稷梁   浏览:2057   标签:SVG动画制作    
这是熟悉 SVG 语法和真实动画的一个很好的练习。永兴集团将使用一个预制的 SVG 心脏,提醒自己是如何viewBox工作的,然后添加一个 animateTransform元素来控制跳动运动。在最初的“简单”方法之后,永兴集团将讨论它有什么问题并进行一些改进。最后,我还将向您展示一些替代的跳动心脏动画。让永兴集团开始!
 
1. 创建一个心形图标
在您选择的矢量工具中,绘制一个简单的心形图标。它不需要是完美的,但为了方便起见,让它成为一条连续的路径。我在 100x100 像素的画布上创建了我的,几乎填满了整个东西。

SVG动画1

2.开始写SVG

在 Codepen(或 blanco HTML 文件)中,首先编写 SVG 元素的基本内容:
1
2
3
<svg width="100" height="100" viewBox="0 0 100 100"><font>font>
  <font>font>
svg>
在这里,永兴集团为 SVG 赋予了与原始画布相同的高度和宽度。永兴集团还将 viewBox 设置为0 0 100 100. 这意味着永兴集团查看 SVG 的窗口从坐标 0 0(左上角)开始,尺寸为 100x100px,因此它与永兴集团的 SVG 完美匹配。
为了清楚地看到您正在处理的内容,添加一个 CSS 规则来为 SVG 背景着色: 
1
2
3
svg {
  background: blue;
}
让永兴集团也使用 flexbox 将永兴集团正在查看的内容居中:
1
2
3
4
5
6
body {
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

3. 添加心路

现在永兴集团需要在 SVG 中嵌套一个路径元素。从空路径开始,带有fill颜色和空d:
1 <path fill="tomato" d="">
定义了一个绘制的d路径,所以让永兴集团添加永兴集团的路径坐标。在您粘贴到文本编辑器中的 SVG 片段中,从d属性中获取所有内容并将其粘贴到永兴集团的空属性中。你应该得到一个看起来像这样的混乱字符串:
1
2
<path fill="tomato" d="M92.71,7.27L92.71,7.27c-9.71-9.69-25.46-9.69-35.18,0L50,14.79l-7.54-7.52C32.75-2.42,17-2.42,7.29,7.27v0 c-9.71,9.69-9.71,25.41,0,35.1L50,85l42.71-42.63C102.43,32.68,102.43,16.96,92.71,7.27z"><font>font>
path>
所有这些都将创建以下内容:

SVG动画制作2

4. 让你的心成长

我想要一颗更大的心。
通过将 SVG 的宽度和高度属性加倍,width="200" height="200"永兴集团将加倍整个物体的大小。或者永兴集团可以将所有内容缩放 150%  width="150" height="150"。或者是其他东西。永兴集团不需要触摸 viewBox 的值,因为它们会相对于永兴集团刚刚更改的 Viewport 保持不变。

5. 添加一点动画

为了使跳动的心脏动画化,永兴集团将使用一个animateTransform嵌套在 SVG 中的元素。 
首先在 SVG 中添加元素,作为路径的兄弟:
1
2
3
4
5
6
<animateTransform font>
    attributeName="transform" <font>font>
    type="scale" <font>font>
    dur="1s" <font>font>
    repeatCount="indefinite"><font>font>
animateTransform>
这将为父元素设置动画,即:整个 . 这在很多情况下都不合适,最好为 中的元素设置动画,但这种方法对永兴集团来说效果很好。为了复习 animateTransform 的工作原理,Kezz(像往常一样)为您介绍了:
永兴集团使用的属性是不言自明的。永兴集团正在创建一个持续时间为 1 秒的比例变换,它将无限期地重复。 

向转换添加值

现在永兴集团需要添加一个值列表,所以它知道要设置多少动画:
1
2
3
4
5
6
7
<animateTransformfont>
      attributeName="transform"<font>font>
      type="scale"<font>font>
      dur="1s"<font>font>
      values="1; 1.5; 1.25; 1.5; 1.5; 1;"<font>font>
      repeatCount="indefinite"><font>font>
animateTransform>
所以这里的心脏从正常大小 ( 1) 开始,然后缩放到1.5正常大小,然后稍微缩小到1.25,然后回到1.5,依此类推。这些值给了永兴集团跳动的效果。

6. 更好的解决方案

改变永兴集团的方式有几个原因,第一个(重要的)原因是:这在许多移动浏览器上不起作用。iOS Safari 和 Chrome 只会表现出一动不动的心,因为它们不喜欢animateTransform被应用到元素上。
“保持我跳动的心”——斯汀
此外,永兴集团正在为整个 SVG 制作动画;在内容动画化的同时保持相同的比例会更有用。这是可能的——永兴集团需要稍微调整一下坐标系——但这是可能的。

添加包装元素并缩小

首先将永兴集团的元素包装在一个组元素中。这就是现在动画的内容:
1
2
3
4
5
6
<svg><font>font>
    <g><font>font>
        <path>path><font>font>
        <animateTransform >animateTransform><font>font>
    g><font>font>
svg>
我还想通过增加viewBox. 这将防止永兴集团的心超越界限,从而掩盖它。
1 <svg width="150" height="150" viewBox="0 0 200 200">
在这一点上,再次给背景颜色是个好主意,所以永兴集团可以看到发生了什么:

SVG动画制作3

好吧,它有效,永兴集团有一个 SVG 心跳,但坐标让永兴集团感到困惑。group 元素从 0、0 缩放,而永兴集团需要永兴集团的心以某种方式从中心缩放。永兴集团可以通过对 应用一个变换,将它的一半高度向上移动一半宽度向左移动来做到这一点:
1

结论

心形SVG完成

 
 
如没特殊注明,文章均为永兴集团原创,转载请注明来自/news/6546.html
XML 地图