[译] 动画中缓动(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

相关文章

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

【前端学习】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,