使用 GSAP 的动画可缩放矢量图形
已发表: 2022-12-06假设您想要一个关于如何为可缩放矢量图形 (SVG) 制作动画的教程:
SVG 是开发人员和设计人员用来创建二维矢量图形的标准。 虽然该格式能够生成丰富的图形,但文件往往比其他常见图像格式更小,因此非常适合在网络上使用。
当涉及到动画 SVG 时,有几种不同的方法可以实现。 GreenSock 的 GSAP 可能是最受欢迎的选项,但不是唯一的选项。 在本教程中,我们将了解如何使用 GSAP 的工具制作 SVG 动画,以及如何使用 JavaScript 触发动画。
这是通过部件的内联(HTML 中的 SVG 代码)和基于 CSS 的动画来实现的。 我的母校 Wufoo 想要刷新我们在这里使用的广告图形。 现在似乎是进一步使用它的好时机。 下面的视频显示了它是如何完成的。 CSS 将受益于动画延迟属性的原生随机化。 看到字母在每个时间间隔稍微调整一下会很酷。 如果这个动画能在大约 3 秒内结束就好了。
translateY(150px) 效果导致恐龙在下方移动得如此之远,以至于什么都没有出现。 恐龙最初在这个广告中是隐藏的,但是当淡入/淡出动画淡入时,Fast 字样出现了。 通过使用 ol' padded box 技术,我们可以创建一个内联 SVG 比例尺,在使用内联 SVG 的同时保持其纵横比。 因为这是一个广告,您可以使用 <a href=>,只需确保将 block 属性设置为 display: block 而不是使用 <div>。
创建动画对象的行为。 导出器可用于创建SVG 动画。 当渲染模式设置为动画时,渲染的整个帧,无论是一个帧(F12 或 Shift-F12),还是渲染中的所有帧(Shift-F12 或 F12),都保存在一个文件中。
动画元素可用于创建 SVG 图形。 SMIL 的第一个动画元素被确定如下: *animate%27/animate%27 – 它允许您随着时间的推移为标量属性和属性设置动画。
在大多数情况下,使用 *img 标签是导致SVG 动画失败的主要原因。 当动画开始时,SVG 可能在网站上可见,但它不会开始。 解决此问题的最简单方法是将所有 img> 标签替换为 object> 标签。
在 SVG 中,您可以随时间更改矢量图形以创建动画效果。 有几种方法可以为SVG 内容制作动画。 对于这篇文章,我将使用 SVG 的动画元素 [svg-animated]。 可以通过基于时间对文档元素进行更改来描述 SVG 文档片段中包含的数据。
如何创建动画 Svg?
有几种创建动画 SVG的方法。 一种方法是使用 Adobe Illustrator 等矢量绘图程序创建图稿,然后使用 After Effects 等工具添加动画。 另一种方法是使用像 Snap.svg 这样的工具直接在代码中创建动画。
本教程将引导您完成在 sva 上下文中使用 CSS 进行优化和动画制作的基本步骤。 唯一可用于此目的的 Bootstrap 版本是 Bootstrap 4.1.3。 如果您进行引导,请确保您的 SVG 包含类 img-fluid 以确保它在移动设备上正确缩放。 可以通过向 SVG 添加类来自定义图像。 当我们要求 CSS 对动画执行效果时,我们必须指定其名称和关键帧。 当矩形完成淡入时,文本动画必须同时运行。 由于这一变化,这一步的三次方贝塞尔曲线现在处于更快的移动状态。 这个动画有 40% 的时间出现在我们中间。 我们重置 stroke-dashoffset,使破折号覆盖整个路径。
如何为 Svg 设置动画
借助正确的工具,制作动画 svg 可以是一个简单而愉快的过程。 选择要制作动画的帧时,可以使用 SVG 将其导出。 您也可以在该帧中选择一个节点来设置动画。 通过实时预览,您可以调整动画直到您满意为止。
在为 HTML 文件制作动画之前,您必须首先声明关键帧和名称。 通过将属性分配给元素来维护属性。 编辑完所有元素后,保存最终文件。
动画 Svg Css
可以使用 CSS 对 SVG 文件进行动画处理。 有许多不同的属性可用于创建动画。 最常见的属性是:动画、动画延迟、动画持续时间、动画迭代次数、动画名称、动画播放状态、动画计时函数。
可缩放矢量图形 (SVG) 是一种基于 XML 的矢量图像格式,允许在二维图形中进行交互和动画。 本文将介绍如何导出和优化 sva 文件、嵌入它们,并解释它们中的每一个如何影响您创建的样式和动画。 CSS 将用于样式和动画。 如果您使用的是路径繁多的文件,将小数位数从四位更改为一位可以将文件大小减小 50%。 如果优化最终破坏了您的文件,您可以预览它,所以这是一个很大的优势。 Peter Collingridge 用于优化 sva 的在线工具是几个可用的工具之一。 因为 SVG 1.1 不需要 CSS,所以应用于 SVG 节点的 CSS 样式属性被称为表示属性。
设置表示属性类似于在元素上设置 CSS 属性。 尽管它们在样式级联中起着重要作用,但我们很快就能更深入地解释这一点。 CSS 属性也可用于定义SVG 元素的样式。 在 sva 节点上使用表示属性与使用它们定义 CSS 属性相同。 所有表示属性都是低级权威样式表,因此它们可以由任何其他样式定义指定。 图表中较低的样式,例如上面的样式,应该在它们上面的样式上使用。 CSS2 的动态伪类,例如:hover、:active 和:focus,用于设置大多数 SVG 的样式。
SVG 元素以与 HTML 元素相同的方式转换和转换原点的能力类似于 HTML 元素以与 CSS 元素相同的方式转换和转换原点的能力。 因为 SVG 不受框模型的约束,所以它们没有边框、填充或边距,就像 HTML 元素一样。 如音节规范中所述,适当的属性名称(通常是小写字母和连字符)由 CSS 规范定义。 当以百分比指定 transform-origin 值时,它是相对于元素的边界框设置的。 截至目前,Firefox 不支持为转换设置百分比值的原点。 如果您希望转换从长远来看表现良好,您应该使用绝对值。 有六种方法可以在文档中插入 SVG,每种方法各有优缺点。
在使用 embed 方法嵌入 SVG 后,您可以确定某些 CSS 样式、动画和交互是否有效。 有关该技术的更多信息,请参阅 Jake Archibald 的优秀文章。 它仍然得到广泛支持,尽管 HTML 标准从未指定如何格式化它。 >svg> 标签也可用于将 SVG 合并到文档内联中,这称为代码岛。 因为可以使用内联SVG 和 CSS 设置 SVG 的样式和动画,所以使用起来更简单。 如果您要嵌入 SVG,请确保它可嵌入所有浏览器。 根据嵌入技术,您可能需要添加 hack 或修复程序以使您的 SVG 跨浏览器兼容。
要查看详细信息,请阅读我关于 Codrops 的文章。 当图像作为背景嵌入到 SVG 中时,不可能添加任何新的技巧。 您还必须确保元素的宽度为 100%。 在 CSS 中,300 x 150 像素是替换元素的默认大小。 只有 Thierry Koblentz 在 A List Apart 上开创的 Adobe Photoshop hack 可以使 iframe 响应。 CSS 媒体查询也可以提交给 SVG。 使用媒体查询,您可以跨视口大小更改 SVG 的样式。 当 SVG 响应页面的视口时,它不是页面的视口而是它自己的视口。 这与实践中的元素查询是同一个概念。
带有 CSS 的 Svg 动画
CSS 可用于创建这种通用图像格式的动画图像。 因此,可以更轻松地查看和理解更复杂的效果。 通过向 SVG 添加简单的类,您可以随意更改图像的形状。 您可以使用它来创建更多动态图形。
如何为 Svg 路径设置动画
有几种不同的方式来制作 SVG 路径的动画: 1. 使用 SVG 变换属性 2. 使用CSS3 动画3. 使用 SMIL 4. 使用 JavaScript 变换属性是制作 SVG 路径动画的最常见方式。 这将让您通过转换路径的坐标来为路径设置动画。 要使用 CSS3 为路径设置动画,您需要将 animation-timing-function 属性设置为 linear 或 alternate。 然后,您可以将 animation-duration 属性设置为您希望动画运行的时间长度。 SMIL 是另一种动画路径的方法。 SMIL 代表同步多媒体集成语言。 这将使您可以使用该元素为路径设置动画。 为路径设置动画的最后一种方法是使用 JavaScript。 为此,您需要创建一个函数来更新路径的坐标。 然后,您可以调用此函数来运行动画。
使用 SVG 路径,您可以轻松创建任何内容。 它是一种矢量图像格式,不是由彩色像素组成,而是由创建后可以在屏幕上解释的数学函数组成。 本文将向您展示如何使用 getPointAtLength() 上下文中的函数 getPointAtLength() 将 SVG 路径数据集用于创意目的。 我们将在该动画的每一帧中沿着一条路径制作一个新的圆形元素。 每个帧都将加载一个新粒子,该粒子将通过在每个帧上按 createParticle 函数创建。 为了使动画更漂亮,我还为保险丝的 stroke-dashoffset 设置了动画,使其看起来更逼真。 我们现在能够从 SVG 路径中提取点的坐标,并使用我们的新 API 将它们应用于任何其他路径。 因为每个矢量的动画都有自己的延迟,是根据其沿路径的位置计算的,因此预计会产生很好的粒子流。 请花时间尝试这种技术并在 Twitter 上与我分享你的结果,我迫不及待地想看看你想出了什么。
为什么你应该在你的网站上制作 Svgs 动画
可以通过外部 JavaScript 菜单访问 JavaScript。 您必须将破折号(和间隙)长度设置为等于路径长度,以便为该路径设置动画,就好像它在屏幕上缓慢而平滑地绘制一样。 弯曲路径中每个破折号和间隙的长度等于整个路径的长度。 你如何为 sva 制作动画? 与笨重的 gif 和视频相比,使用 CSS 和 SVG 为网站制作动画可以缩短加载时间。 无需安装其他 JavaScript 库即可为您的网站制作动画的功能还允许您在页面加载时制作简单的动画。 您认为 SMIL 会退市吗? 事实上,它并不是SMIL 动画的替代品。 尽管该规范基于 SMIL,但多年来它已经有了很大的发展。 浏览器以多种方式支持它。
Svg 动画示例
有几种不同类型的动画可以与 SVG 一起使用。 这些包括:
-SMIL 动画:这些是用 SMIL(同步多媒体集成语言)编写的动画。 SMIL 是一种基于 XML 的语言,用于描述时间和动画。
-CSS 动画:这些是用 CSS 编写的动画。 CSS 是一种样式表语言,用于描述以标记语言编写的文档的呈现方式。
-JavaScript 动画:这些是用 JavaScript 编写的动画。 JavaScript 是一种用于创建交互式网页的编程语言。
SVG(可缩放矢量图形)是一种可以缩放到任意大小的视觉元素。 它们在以后的生活中更容易修改和适应,因为它们是基于代码而不是基于像素的。 svg 最好的部分是什么? 动画非常小,加载速度非常快。 它们是各种现代网页设计应用程序的理想选择。 如果 Animator 已连接到图像并设置了动画设置,则可用于为图像制作动画。 如果您想使用 CSS、JavaScript 或 HTML 制作 SVG 动画,请使用 Framer 的SVG 动画工具。
Svg 可以动画化 Css 吗?
还有其他可用的动画工具,但它们不像 CSS 那样容易制作动画。
为什么 Svg 是网页设计的高级图像格式
可缩放矢量图形 (SVG) 是一种矢量图像格式,可用于生成对 SEO 友好且可缩放的高质量图像。 除了易于编辑之外,它还具有广泛的内置过滤器,可用于创建引人入胜且具有视觉吸引力的用户界面效果。 另一种类型是 CSS,这是一种更传统的基于文本的格式,可扩展且更难定制。