2
2
3
3
Vue 提供了一些抽象概念,可以帮助处理过渡和动画,特别是在响应某些变化时。这些抽象的概念包括:
4
4
5
- - 在 CSS 和 JS 中 ,使用内置的 ` <transition> ` 组件来钩住组件进入和离开 DOM 。
5
+ - 组件进入和离开 DOM 的钩子, 在 CSS 和 JS 中均可用 ,使用内置的 ` <transition> ` 组件 。
6
6
- 过渡模式,以便你在过渡期间编排顺序。
7
- - 在处理多个元素位置更新时 ,使用 ` <transition-group> ` 组件,通过 FLIP 技术来提高性能。
7
+ - 处理多个元素就地更新的钩子 ,使用 ` <transition-group> ` 组件,通过 FLIP 技术来提高性能。
8
8
- 使用 ` watchers ` 来处理应用中不同状态的过渡。
9
9
10
10
我们将在本指南接下来的三个部分中介绍所有这些以及更多内容。然而,除了提供这些有用的 API 之外,值得一提的是,我们前面介绍的 class 和 style 声明也可以应用于动画和过渡,用于更简单的用例。
11
11
12
- 在下一节中,我们将回顾一些 web 动画和过渡的基础知识,并提供一些资源链接以进行进一步的研究。如果你已经熟悉 web 动画,并且了解这些原理如何与 Vue 的某些指令配合使用,可以跳过这一节。对于希望在开始学习之前进一步了解网络动画基础知识的其他人 ,请继续阅读。
12
+ 在下一节中,我们将回顾一些 web 动画和过渡的基础知识,并提供一些资源链接以进行进一步的研究。如果你已经熟悉 web 动画,并且了解这些原理如何与 Vue 的某些指令配合使用,可以跳过这一节。如果希望在开始学习之前进一步了解 web 动画基础知识 ,请继续阅读。
13
13
14
14
## 基于 class 的动画和过渡
15
15
@@ -120,7 +120,7 @@ Vue.createApp(Demo).mount('#demo')
120
120
121
121
你可能注意到上面显示的动画使用了 ` transforms ` 之类的东西,并应用了诸如 ` perspective ` 之类的奇怪的 property——为什么它们是这样实现的,而不是仅仅使用 ` margin ` 和 ` top ` 等?
122
122
123
- 我们可以通过对性能的了解,在 web 上创建极其流畅的动画。我们希望尽可能对元素动画进行硬件加速,并使用不触发重绘的 property。我们来介绍一下如何实现这个目标。
123
+ 通过关注性能表现,我们可以在 web 上创建极其流畅的动画。我们希望尽可能对元素动画进行硬件加速,并使用不触发重绘的 property。我们来介绍一下如何实现这个目标。
124
124
125
125
### Transform 和 Opacity
126
126
@@ -144,15 +144,15 @@ transform: translateZ(0);
144
144
145
145
许多像 GreenSock 这样的 JS 库都会默认你需要硬件加速,并在默认情况下应用,所以你不需要手动设置它们。
146
146
147
- ## Timing
147
+ ## 时长
148
148
149
- 对于简单 UI 过渡,即从一个状态到另一个没有中间状态的状态,通常使用 0.1s 到 0.4s 之间的计时,大多数人发现 * 0.25s* 是一个最佳选择。你能用这个定时做任何事情吗?并不是 。如果你有一些元素需要移动更大的距离,或者有更多的步骤或状态变化,0.25s 并不会有很好的效果,你将不得不有更多的目的性 ,而且定时也需要更加独特。但这并不意味着你不能在应用中重复使用效果好的默认值。
149
+ 对于简单 UI 过渡,即从一个状态到另一个没有中间状态的状态,通常使用 0.1s 到 0.4s 之间的计时,大多数人发现 * 0.25s* 是一个最佳选择。你能用这个定时做任何事情吗?并不能 。如果你有一些元素需要移动更大的距离,或者有更多的步骤或状态变化,0.25s 的效果可能会不好,你将不得不更加用心 ,而且定时也需要更加独特。但这并不意味着你不能在应用中重复使用效果好的默认值。
150
150
151
151
你也可能会发现,起始动画比结束动画的时间稍长一些,看起来会更好一些。用户通常是在动画开始时被引导的,而在动画结束时没有那么多耐心,因为他们想继续他们的动作。
152
152
153
- ## Easing
153
+ ## 缓动效果
154
154
155
- Easing 是在动画中表达深度的一个重要方式 。动画新手最常犯的一个错误是在起始动画节点使用 ` ease-in ` ,在结束动画节点使用 ` ease-out ` 。实际上你需要的是反过来的。
155
+ 缓动效果是在动画中表达深度的一个重要方式 。动画新手最常犯的一个错误是在起始动画节点使用 ` ease-in ` ,在结束动画节点使用 ` ease-out ` 。实际上你需要的是反过来的。
156
156
157
157
如果我们将这些状态应用于过渡,它应该像这样:
158
158
@@ -172,17 +172,17 @@ Easing 是在动画中表达深度的一个重要方式。动画新手最常犯
172
172
173
173
<common-codepen-snippet title =" Transition Ease Example " slug =" 996a9665131e7902327d350ca8a655ac " tab =" css,result " :editable =" false " :preview =" false " />
174
174
175
- Easing 也可以表达动画元素的质量 。以下面的 Pen 为例,你认为哪个球是硬的,哪个球是软的?
175
+ 缓动效果也可以用来表达动画元素的材质 。以下面的 pen 为例,你认为哪个球是硬的,哪个球是软的?
176
176
177
177
<common-codepen-snippet title =" Bouncing Ball Demo " slug =" wvgqyyW " :height =" 500 " :editable =" false " />
178
178
179
- 你可以通过调整你的 Easing 来获得很多独特的效果,使你的动画非常时尚 。CSS 允许你通过调整 cubic-bezier property 来修改 Easing ,Lea Verou 开发的 [ 这个 playground] ( https://cubic-bezier.com/#.17,.67,.83,.67 ) 对探索这个问题非常有帮助。
179
+ 你可以通过调整你的缓动函数来获得很多独特的效果,使动画非常炫酷 。CSS 允许你通过调整 cubic-bezier 函数的参数来修改缓动效果 ,Lea Verou 的 [ 这个 playground] ( https://cubic-bezier.com/#.17,.67,.83,.67 ) 对探索这个问题非常有帮助。
180
180
181
- 虽然使用 cubic-bezier ease 提供的两个控制柄可以为简单的动画获得很好的效果,但是 JavaScript 允许多个控制柄,以此支持更多的变化 。
181
+ 虽然可以通过三次贝塞尔曲线提供的两个控制点为简单动画实现很好的效果,但 JavaScript 允许使用多个控制点,因此也支持更多的变化 。
182
182
183
- ![ Ease 比较 ] ( /images/css-vs-js-ease.svg )
183
+ ![ 缓动效果对比 ] ( /images/css-vs-js-ease.svg )
184
184
185
- 以弹跳为例。在 CSS 中,我们必须声明向上和向下的每个关键帧。在 JavaScript 中,我们可以通过在 [ greensock API(GSAP)] ( https://greensock.com/ ) 中声明 ` bounce ` 来描述 ease 中所有这些移动 (其他 JS 库有其他类型的 easing 默认值 )。
185
+ 以弹跳为例。在 CSS 中,我们必须声明向上和向下的每个关键帧。在 JavaScript 中,我们可以通过在 [ GreenSock API (GSAP)] ( https://greensock.com/ ) 中声明 ` bounce ` 来描述缓动效果中的所有这些移动 (其他 JS 库有其他类型的缓动效果默认值 )。
186
186
187
187
这里是 CSS 中用来实现 bounce 的代码 (来自 animate.css 的例子):
188
188
@@ -230,7 +230,7 @@ Easing 也可以表达动画元素的质量。以下面的 Pen 为例,你认
230
230
gsap .from (element, { duration: 1 , ease: ' bounce.out' , y: - 500 })
231
231
```
232
232
233
- 我们将在之后章节的部分示例中使用 GreenSock。他们有一个很棒的 [ ease visualizer ] ( https://greensock.com/ease-visualizer ) ,帮助你建立精心制作的画架 。
233
+ 我们将在之后章节的部分示例中使用 GreenSock。他们有一个很棒的[ 缓动效果可视化工具 ] ( https://greensock.com/ease-visualizer ) ,帮助你建立精心制作的缓动效果 。
234
234
235
235
## 进一步阅读
236
236
0 commit comments