本系列的上一篇教程向您展示了如何使用 KUTE.js 对任何元素的不同 CSS 属性进行动画处理。但是,核心引擎不允许您对特定于 SVG 元素的属性进行动画处理。同样,您无法使用笔画对不同路径形状的 SVG 变形或不同 SVG 元素的绘制进行动画处理。您必须使用 KUTE.js SVG 插件来完成这些任务。
在开始之前,请记住,您必须包含 KUTE.js 核心引擎和 SVG 插件才能使本教程中的示例正常工作。
变形 SVG 形状
将一种 SVG 形状变形为另一种形状是您会遇到的一项非常常见的功能。 KUTE.js SVG 插件为我们提供了轻松创建自己的变形动画所需的一切。
使用此库可以通过三种方式变形 SVG 形状:
- 您可以使用 fromTo() 方法来指定元素的初始和最终 SVG 路径。
- 您还可以使用 to() 方法并避免指定初始路径。在这种情况下,变形的起始值将根据要变形的所选元素的 d 属性的值确定。
- 还有一个选项是将最终路径作为字符串直接传递给补间。这样,您就可以避免 SVG 中有两个不同的路径。
KUTE.fromTo('#shape-a', {path: '#shape-a' }, { path: '#shape-b' }); KUTE.to('#shape-a', { path: '#shape-b' }); KUTE.fromTo('#shape-a', {path: '#shape-a' }, { path: 'The path of #shape-b as a valid string.' }); KUTE.to('#shape-a', { path: 'The path of #shape-b as a valid string.' });登录后复制
在初始化期间,库根据我们提供的路径对一些点进行采样。然后将这些点存储在两个不同的数组中。最后,这些数组用于插值。您可以配置许多选项来控制不同路径的变形行为。
- morphPrecision:正如您可能已经猜到的,此选项允许您指定变形的精度或准确度。它被指定为一个数字,值越小精度越高。请记住,更高的精度会带来更高的准确度,但也会损害性能。当您处理 d 属性仅包含 h、l 和 v 的多边形形状或路径时,此选项不适用。在这种情况下,将使用原始多边形路径而不是采样新路径。
- reverseFirstPath:您可以将此选项的值设置为 true 以反转第一个形状的绘制路径。它的默认值为 false。
- reverseSecondPath:您可以将此选项的值设置为 true 以反转第二个形状的绘制路径。它的默认值也是 false。
- morphIndex:有时,路径上的点在变形过程中可能需要覆盖很长的距离。您可以使用 morphIndex 参数控制此行为。指定后,此参数允许您旋转最终路径,使所有点都移动尽可能短的距离。
让我们利用到目前为止所学到的知识将电池图标变成书签图标。您应该注意,我使用小写的 l 来指定相对路径。这是所需的标记:
登录后复制
以下 JavaScript 创建补间对象并在单击按钮时启动动画:
var morphA = KUTE.to( '#battery-a', { path: '#bookmark-a' }, { duration: 5000 } ); startButton.addEventListener( "click", function() { morphA.start(); }, false );登录后复制
这是一个演示,显示了上述代码的实际运行情况。我还添加了一个额外的元素,其中变形动画将 reverseFirstPath 设置为 true。这将帮助您了解不同配置选项对变形的总体影响。动画持续时间已设置为 5 秒,以便您可以仔细观察两个动画并发现差异。
在前面的示例中,主路径没有任何子路径。这使得变形变得非常简单。然而,情况可能并非总是如此。
让我们向书签添加一个额外的子路径以及电池图标。如果现在改变图标,您将看到只有第一个子路径有动画。第二个子路径在动画开始时消失并在动画结束时重新出现。在这种情况下,对所有子路径进行动画处理的唯一方法是将子路径更改为单独的路径。这是一个例子:
<!-- Before -->登录后复制<!-- After -->
动画 SVG 笔画
另一种流行的与 SVG 相关的动画效果包括从无到有,然后使用 SVG 笔画绘制预定义的形状。这可用于对徽标或其他对象的绘制进行动画处理。在本节中,您将学习如何使用 KUTE.js 为 Font Awesome 自行车图标创建抚摸动画。
在 KUTE.js 中可以通过三种方式对 SVG 笔画进行动画处理。您可以通过将 fromTo 值设置为 0% 0% 和 00% 来设置从 0% 到 100% 的动画。您还可以通过将值设置为 0% 5% 和 950% 等值来绘制 SVG 形状的一部分。最后,您可以将结束值设置为0% 0%,以创建擦除效果而不是绘图效果。
这是我用来为自行车设置动画的 JavaScript 代码:
var wholeAnimation = KUTE.fromTo( "#icon", { draw: "0% 0%" }, { draw: "00%" }, { duration: 10000} ); var partialAnimation = KUTE.fromTo( "#icon", { draw: "0% 5%" }, { draw: "950%" }, { duration: 10000} ); var eraseAnimation = KUTE.fromTo( "#icon", { draw: "00%" }, { draw: "0% 0%" }, { duration: 5000} );登录后复制
正如您在下面的示例中看到的,您无需担心路径内的多个子路径。 KUTE.js 单独为所有这些子路径设置动画,没有任何问题。动画持续时间用于确定最长路径的动画时间。然后根据其余子路径的长度确定其笔画持续时间。
动画 SVG 变换
我们已经在本系列的第二个教程中学习了如何对 CSS 变换值进行动画处理。 KUTE.js SVG 插件还允许您使用 svgTransform 属性来旋转、平移、缩放或倾斜网页上的不同 SVG 元素。
rotate 属性接受确定旋转角度的单个值。默认情况下,旋转发生在元素的中心点周围,但您可以使用 transformOrigin 属性指定新的旋转中心。
translate 属性接受格式为 translate: [x, y] 或 translate: x 的值。当提供单个值时,y 的值假定为零。
当倾斜元素时,您必须使用 skewX 和 skewY。 SVG 中不支持 skew[x, y]。同样,scale 属性也只接受一个值。相同的值用于在 x 和 y 方向上缩放元素。
下面是一个代码片段,它将所有这些转换应用于矩形和圆形。
var rotation = KUTE.allTo( "rect, circle", { svgTransform: { rotate: 360 } }, { repeat: 1, yoyo: true } ); var scaling = KUTE.allTo( "rect, circle", { svgTransform: { scale: 1.5 } }, { repeat: 1, yoyo: true } ); var translation = KUTE.allTo( "rect, circle", { svgTransform: { translate: [100, -50] } }, { repeat: 1, yoyo: true } ); var skewing = KUTE.allTo( "rect, circle", { svgTransform: { skewX: 25 } }, { repeat: 1, yoyo: true } );登录后复制
我已将 yoyo 参数设置为 true ,以便在反向播放动画后,变换属性将设置为其初始值。这样,我们就可以通过单击按钮来一次又一次地重播动画。
如果您在演示中按下旋转按钮,您会发现它似乎对圆圈没有任何影响。要观察圆的旋转,您必须对其应用倾斜变换以更改其形状,然后立即单击“旋转”。
最终想法
本教程首先介绍了 SVG 变形和描边动画的基础知识。您学习了如何正确变形具有子路径的复杂路径,以及如何通过为 draw 属性选择正确的值来创建擦除描边效果而不是绘图效果。之后,我们讨论了如何使用 svgTransform 属性来为不同的变换设置动画。
在各种教程中,我们已经看到 JavaScript 变得多么强大。它并非没有学习曲线,而且还有大量的框架和库可以让您忙碌起来。如果您正在寻找其他资源来学习或在工作中使用,请查看我们在 Envato Market 上提供的资源。
本教程旨在向您介绍 KUTE.js SVG 插件的所有功能并帮助您快速入门。您可以通过阅读文档了解有关 SVG 插件的更多信息。
以上就是高效使用KUTE.js进行动画:第三部分,SVG动画化的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 高效使用KUTE.js进行动画:第三部分,SVG动画化
发表评论 取消回复