前端requestAnimationFrame动画

题目:我们来实现一个最简单的需求,将一个元素从屏幕左边均匀地移动到屏幕右边。

一、CSS实现

用 css 实现是最合理也是最高效的,示例代码如下。

@keyframes move_animation1 {
  0% { left: 0px; }
  100% { left: calc(100% - 60px); }
}
@keyframes move_animation {
  0% { transform: translateX(0); }
  50% { transform: translateX(250px); }
  100% { transform: translateX(500px)); }    
}
.animate-div {
  width: 60px;
  height: 40px;
  border-radius: 5px;
  background: #92B901;
  left: 0;
  position: absolute;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  animation: move_animation 5s linear 2s infinite alternate;
}

注意:transform:translateZ(0); 用来开启 chrome GPU 加速,解决动画”卡顿”。在动画中使用 transform 比 left/top 性能更好,能减少浏览器 repaint。

二、JavaScript 实现

首先想到的是 setInterval/setTimeout,原理就是利用人眼的视觉残留和电脑屏幕的刷新,让元素以连贯平滑的方式逐步改变位置,最终实现动画的效果。

常用的屏幕刷新频率为 60Hz,一些电竞屏幕则为 144Hz。我们以常用的刷新频率为例࿰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

压缩pdf在线工具,压缩pdf大小的软件

如何有效地压缩PDF文件大小却是个问题,为了获得最佳的压缩效果,我们必须依赖专业的压缩工具,采用错误的方法可能会对文件内容产生负面影响,甚至导致文件无法打开,今天,我将分享一些独特的压缩技巧&#xff…

【leetcode——有效的括号】

最近换实习很久不刷leetcode。。真的有点手生了,还是要坚持刷阿! 有效的括号这道题就是实现了一个相互匹配,那么基本上就是用字典,那么如何灵活的用字典,可以使用括号对应数字取加和判断,也可以就单独压入…

如何在Spring Boot中实现OAuth2认证

如何在Spring Boot中实现OAuth2认证 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何在Spring Boot应用中实现OAuth2认证&#x…

HP UX服务器监控指标解读(SSH)

在当今复杂多变的IT环境中,服务器的性能和稳定性是企业运营的关键。HP UX作为一款高性能的Unix服务器操作系统,其监控管理显得尤为重要。监控易作为一款功能强大的监控软件,为HP UX服务器提供了全面的监控解决方案。本文将针对监控易中HP UX服…

在编译 PHP 8.3.8 时遇到 configure: error: Package requirements (libxml-2.0 >= 2.9.0)

configure: error: Package requirements (libxml-2.0 > 2.9.0) were not met: 在编译 PHP 8.3.8 时遇到 configure: error: Package requirements (libxml-2.0 > 2.9.0) were not met 错误时,可能是因为 pkg-config 无法找到 libxml2 的开发文件或路径。以下…

小程序接口报错ERR_CERT_COMMON_NAME_INVALID

收到 ERR_CERT_COMMON_NAME_INVALID 错误,可能是因为使用了不受信任的证书或自签名证书。以下是一些可能的解决方法: 1. 检查域名配置: • 确保 manifest.json 中的合法域名配置正确。 • 确认微信小程序后台也添加了对应的域名。 2. 使用…

C++进阶之哈希

一、unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行…

【python012】Python根据页码处理PDF文件的内容

在日常工作和学习中,需要从PDF文件中提取特定页面的内容,以便进行知识、材料压缩等。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关注、批评、指正,互三走起来,小手动起…

CF814 D. An overnight dance in discotheque [树形dp+提前处理祖先需要的状态]

传送门 [前题提要]:本题的树形dp的思考方式既考虑子孙需要的贡献以及提前预处理出祖先节点所需要的状态,感觉是我几乎没有碰到过的姿势,平时遇到的大部分的树形dp大都是单单考虑子树的贡献以及限制,感觉很新,故写篇博客记录一下 当然本题具有一个更为"简单"的贪心解…

MyBatis Plus条件构造器使用

1Wrapper: 条件构造抽象类,最顶端父类 1.1 AbstractWrapper: 用于查询条件封装,生成 sql 的 where 条件 1.2 QueryWrapper: Entity 对象封装操作类,不是用lambda语法 1.3 UpdateWrapper: Update…

【工具分享】Nuclei

文章目录 NucleiLinux安装方式Kali安装Windows安装 Nuclei Nuclei 是一款注重于可配置性、可扩展性和易用性的基于模板的快速漏洞验证工具。它使用 Go 语言开发,具有强大的可配置性、可扩展性,并且易于使用。Nuclei 的核心是利用模板(表示为简…

前端学习笔记(2406261):jquery使用checkbox控制页面自动刷新

文章目录 需求登录页面主页面 API用户登录login获取数据getdata 代码登录页面主页面 关于后端 需求 这是一个物联网的演示项目,web端能够实时显示后台数据的变化,其流程非常简单: 用户登录登录成功后显示主界面面主界面进入后自动显示数据数…

仓库管理系统19--盘存管理

原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现 1、什么是盘存 盘存也叫盘库,盘库是指对一个仓库、库房或者商店的库存进行全面清点和核对的过程。在盘库过程中&am…

L03_Redis知识图谱

这些知识点你都掌握了吗?大家可以对着问题看下自己掌握程度如何?对于没掌握的知识点,大家自行网上搜索,都会有对应答案,本文不做知识点详细说明,只做简要文字或图示引导。 Redis 全景图 Redis 知识全景图都包括什么呢?简单来说,就是“两大维度,三大主线”。 Redis …

IDEA中导入Maven项目

IDEA中导入Maven项目 方式1:使用Maven面板,快速导入项目 打开IDEA,选择右侧Maven面板,点击 号,选中对应项目的pom.xml文件,双击即可 说明:如果没有Maven面板,选择 View > Appe…

qt 开发笔记 动态链接库应用

1.概要 1.1 需求 库有两种,动态库和静态库,这里说的是动态库;动态库的加载方式有两种,一直是静态的一种是动态的,这里的静态加载是指静态加载动态,是一种加载动态库的方式。也有一种动态加载的方式&#…

打造你的第一个STM32步进电机控制器:详细教程与实战技巧

1. 引言 步进电机因其精确的位置控制和较高的响应速度,在自动化设备、3D打印机、CNC机床等领域广泛应用。本文将详细介绍如何使用STM32微控制器来控制步进电机,从理论到实践,帮助读者全面掌握这一重要技术。 STM32系列微控制器以其强大的性…

51单片机第7步_ctype.h库函数

本章重点学习ctype.h库函数。 //介绍C51库函数ctype.h的使用; #include <REG51.h> //包含头文件REG51.h,使能51内部寄存器; #include <ctype.h> //bit isalpha( unsigned char value ); //检查输入参数value是否为英文字母,若是英文字母,则返回1,若不是英文字…

Font Awesome 文件类型图标

Font Awesome 文件类型图标 Font Awesome 是一个广泛使用的图标库,它提供了大量的矢量图标,可以轻松地与各种网页和应用程序集成。这些图标涵盖了多种类别,包括文件类型图标。在本文中,我们将探讨 Font Awesome 提供的一些常见的文件类型图标,以及如何在项目中使用它们。…

探索LangChain-Chatchat 0.3:一体化Agent与强大RAG模型的全面入门指南

介绍 LangChain-Chatchat 支持RAG和Agent0.3版本跟大模型解耦,支持Xinference、Ollama、LocalAI、FastChat、One API,可以非常方便的切换各个模型,本文只是介绍XinferenceXorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 X…