user-interface - 丰富的 UI 图标动画是怎么做的?
问题描述
我最近在 Apple 的 Home 应用程序中遇到了漂亮的图标动画。这是打开/关闭车库门的示例:https ://giphy.com/gifs/0it1uTDtVR1Uw1FByx
我想知道如何制作这些动画。我能想到的方法有:
- 手动创建形状并在代码中为它们设置动画(这很难做到)
- 使用一些动画工具并导出 *.gif 帧(但这样我们会丢失矢量图形)
- 使用一些动画工具并导出 *.svg 帧(这效率高吗?)
- 使用一些动画工具来生成包含所有形状和动画的代码(例如 JS/CSS)(这样的工具/程序是否存在?)
有没有人有制作这种动画的经验?如果你能分享这个经验那就太好了:)
解决方案
显然,没有一个答案是详尽无遗的。纯粹的“CSS3 艺术”是我见过人们使用的路线,因为它可以精确地定义复杂的几何图形和动画。但这里有一些我研究过使用 SVG 的方法。
实际上,您可以在 SVG 中嵌入一个脚本标签来为元素设置动画。像这样的东西:
<svg>
<!-- svg objects -->
<script><![CDATA[!
//... Javascript to animate svg objects...
]]></script>
</svg>
您还可以使用像snapsvg.io这样的库,其中动画 svg 的构建完全使用 JavaScript 完成。这是他们用于快速入门页面的示例:
var s = Snap("#svg");
var bigCircle = s.circle(150, 150, 100);
bigCircle.attr({
fill: "#bada55",
stroke: "#000",
strokeWidth: 5
});
var smallCircle = s.circle(100, 150, 70);
var discs = s.group(smallCircle, s.circle(200, 150, 70));
discs.attr({
fill: "#fff"
});
bigCircle.attr({
mask: discs
});
smallCircle.animate({r: 50}, 1000);
否则,您可以使用像这样的无代码动画 svg 创建器。
免责声明:我没有在演示计划之后测试过无代码站点,并且可能永远不会使用它。我个人的偏好可能是第一个建议,但像 snapsvg.io 这样的 JavaScript 库似乎是一个不错的中间立场。
推荐阅读
- swift - Swift:具有符合相等协议的嵌套枚举案例的更少代码
- android - 如何在材料设计TextInputLayout中实现错误消息的旧外观?
- java - 将 entityGraph 与会话一起使用
- javascript - Laravel Mix 中的 Webpack 别名为 node_modules
- typescript - Firebase 身份验证错误代码:无法导航文件
- javascript - 在打字稿中导入文件的正确方法是什么?
- excel - 如何创建嵌套循环以检查第二个列表中是否存在值
- java - Maven:如何编译?保持文件结构完整
- html - 使用引导折叠的手风琴角js
- c# - 如何使用 c# 查找一个元素是否包含来自另一个元素的值,而忽略 XML 中的大小写?