[译] 动画中缓动(easing)的基础知识

2023-10-12 02:20

本文主要是介绍[译] 动画中缓动(easing)的基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:https://developers.google.com/web/fundamentals/look-and-feel/animation...

自然界中没有东西是从一个点线性地移动到另一点。 在现实中,事物在运动时可能加速或减速。 我们的大脑习惯于期待这种运动,因此在做动画时,应利用此规律。 自然的运动会让用户对你的应用感觉更舒服,从而产生更好的体验效果。

Tip:

  • 缓动会让你的动画看起来更加自然
  • 为UI元素选择缓出(ease-out)动画
  • 避免缓入(ease-in)或者缓入缓出(ease-in-out)动画,除非你能让其保持简短;这种动画会让用户觉得反应迟钝

在经典的动画中,缓慢开始然后加速称为“慢入”(slow in),开始很快然后减速称为“慢出”(slow out),然而网上最常见的叫法是“缓入”(ease in)和“缓出”(ease out)。有时候两者结合叫做“缓入缓出”(ease in out)。缓动可以使动画不再那么生硬。

缓动的关键字

CSS transition和animation都能够让你去选择一种缓动类型来用于动画中。你可以使用影响动画缓动的关键字。你可以完全自定义你的缓动效果,这使得你能够更加自由的改善自己的应用。

下面是你能在CSS里用到的一些关键字:

  • linear
  • ease-in
  • ease-out
  • ease-in-out

你也可以使用steps关键字,它能让你创建具有步骤的变换,但上面列出的关键字都是最有用的,能够创造出自然的动画效果,这就是你所需要的。

线性动画

没有任何缓动效果的动画就是线性动画,线性变换的图如下:

图片描述

随时间增长,值会等量增长。线性运动的物体看起来很像机器人不自然,这也是用户会觉得不自然的效果。总之你需要避免使用线性运动。

不管你用CSS还是JS来实现动画,你会发现总会有一个选项是linear的。如果用CSS来实现上述效果,代码如下:

transition: transform 500ms linear;

缓出(ease-out)动画

缓出导致动画开始时比线性运动要快,然后在快结束时减速

图片描述

有很多种方法来实现缓出效果,最简单的就是CSS里的ease-out关键字了:

transition: transform 500ms ease-out;

缓出效果非常适合用户界面,因为在开始快速回让动画有反应快的感觉,结束时有自然的减速。

缓入(ease-in)动画

与缓出相反,缓入开始慢,结束快。

图片描述

这种动画像很重的石头掉下来一样,开始很慢,然后快速撞击地面并迅速沉寂。

与缓出和线性动画类似,要想使用缓入动画,可以直接使用关键字:

transition: transform 500ms ease-in;

然而从交互的角度看,缓入会让人觉得有些不寻常,因为它在结尾很突然的沉寂。真实世界里的事物常常是减速,而不是突然停止。缓入还会让人感觉行动迟缓,让人对网站的响应速度产生不好的影响。

缓入缓出(ease-in-out)动画

缓入缓出与汽车的加速减速类似,使用恰当的时候,会比单独使用缓出有更好的效果。

图片描述

需要注意的是,因为开始缓入会让动画有迟钝的感觉,所以缓入的时间不要太长,一般在300~500ms较为合适,其实很大程度上会根据项目来选择合适的数字。缓入缓出由于开始慢,中间加速,结束慢,所以会使得整个动画有非常强烈的对比,用户可能会感到比较满意。

设置缓入缓出动画可以使用ease-in-outCSS关键字:

transition: transform 500ms ease-in-out;

这篇关于[译] 动画中缓动(easing)的基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/192558

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

动画AnimationDrawable、转动

现实开发中:很多地方都用到 点击动画的特效; 本案例本人做了三个关于“动” 画 的效果; 先上图: 总体图: A: B: 1:点击图片按钮,效果是:图片闪动; 通过在xml中定义:标签:animation-list来实现点击动画的效果;  是否循环标签:oneshot ;   时间间隔标签:duration ; 要显示的图片标签:drawable ;

13 transition数组的动画使用

划重点 动画:transitiontransition-group :数组动画数组的 添加 / 删除 豆腐粉丝汤 清淡又健康 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><me