2017-11-10 10:08
动画和转换可以让您的网站生活,并吸引用户探索。动画和转换是UX和UI设计的一个组成部分。但是,他们很容易出错。在处理列表这样的复杂情况下,依靠本机JavaScript和CSS时几乎不可能推理。每当我向后端开发者询问为什么他们如此激烈地讨厌前端时,他们的反应通常是在“ 动画 ”的某处。
即使对于那些渴望创造出复杂的微观互动和顺畅的页面转换的人来说,这也不是一件容易的事情。出于性能方面的原因,我们经常需要依赖CSS,即使在大多数JavaScript环境中工作时,也可能难以管理环境中的中断。
这就是像Vue.js这样的框架介入,把猜测工作和笨拙的setTimeout
函数链转换出来的地方。
这可能会令人困惑,因为添加一个类可能是过渡或动画的触发器。但是,进入Vue世界是一个重要的区别,因为它们都有非常不同的方法和工具箱。
在页面上实现过渡效果的最简单的方法是通过Vue的<transition>组件。它使事情变得如此简单,几乎感觉就像在作弊。Vue将检测是否有任何CSS动画或转换正在使用,并会自动切换转换的内容上的类,允许一个完美的定时过渡系统和完整的控制。
第一步是确定我们的范围。我们modal通过例如设置组件name属性来告诉Vue预先设置过渡类。然后触发一个转换,所有你需要做的是使用v-ifor v-show属性来切换内容的可见性。Vue将相应地添加/删除类。
对于转换有两个“方向”:(enter对于从隐藏到可见leave的元素)和(对于从可见到隐藏的元素)。然后,Vue提供了3个“钩子”,代表转换中的不同时间范围:
.modal-enter-active
/ .modal-leave-active
:这些将在整个过渡期间出现,并且应该用于应用您的CSS过渡声明。您还可以声明需要从头到尾应用的样式。.modal-enter
/ .modal-leave
:使用这些类来定义元素在开始转换之前的样子。.modal-enter-to
/ .modal-leave-to
:你可能已经猜到了,这些决定了你想转换的样式,即“完成”状态。
为了使整个过程可视化,请从Vue的文档中查看此图表:
这如何转化为代码?假设我们只是想淡入淡出,把这些东西放在一起看起来就像这样
这可能是你会遇到的最基本的实现。请记住,这个转换系统也可以处理内容更改。例如,你可以对Vue的动态变化做出反应<component>。
每当selectedView更改,旧的组件将滑出左侧,新的将从右侧进入!
Vue中动画的可能性和方法实际上是无穷无尽的,所以我选择了我最喜欢的技术之一来展示如何为您的数据制作动画。
我们将使用GSAP的TweenLite库来将缓动函数应用于我们状态的变化,并让Vue的闪电反应迅速反映在DOM上。Vue和Inline SVG一样适用于HTML。
我们将创建一个5点线图,沿着X轴均匀分布,其Y轴表示一个百分比。你可以看看这里的结果。
注意我们如何将我们的path计算属性绑定到路径元素的d属性。我们用输出当前值的文本节点做类似的事情。当TweenLite更新数据时,Vue立即作出反应并保持DOM同步。
这真的就是这一切!当然,额外的风格被用来使事情变得漂亮,在这一点上你可能会意识到更多的工作,然后动画本身!
令人印象深刻的是,这样一个强大的框架可以提供这样一个简单而易于管理的API。包括造型在内的动画演示只用了45分钟。如果您优化设置列表转换中使用的模拟数据的时间,可以在2小时内完成。我甚至不想去想象没有Vue的偏头痛诱导过程,更不用说花费多少时间!