Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于开始CSS转换的requestAnimationFrame

用于开始CSS转换的requestAnimationFrame
EN

Stack Overflow用户
提问于 2012-10-25 20:15:13
回答 2查看 5.7K关注 0票数 6

请求动画帧来开始CSS过渡有意义吗?

例如,Mozilla CSS transitions page包含指向此jsfiddle example的链接

CSS:

代码语言:javascript
运行
AI代码解释
复制
#foo{
    border-radius:50px;
    width:50px;
    height:50px;
    background:#c00;
    position:absolute;
    top:0;
    left:0;
    -moz-transition: all 1s;
    -webkit-transition: all 1s;  
    -ms-transition: all 1s;  
    -o-transition: all 1s;  
    transition: all 1s;  
}

JavaScript:

代码语言:javascript
运行
AI代码解释
复制
var f = document.getElementById('foo');
document.addEventListener('click', function(ev){
    f.style.left = (ev.clientX-25)+'px';
    f.style.top = (ev.clientY-25)+'px';
},false);    

像下面这样重写这个例子有什么意义吗?(参见this jsfiddle)

JavaScript:

代码语言:javascript
运行
AI代码解释
复制
var rAF = window.mozRequestAnimationFrame ||
          window.webkitRequestAnimationFrame;
var f = document.getElementById('foo');
document.addEventListener('click', function(ev){
    rAF(function() {
        f.style.left = (ev.clientX-25)+'px';
        f.style.top = (ev.clientY-25)+'px';
    });
},false);

谢谢你的回复。

EN

回答 2

Stack Overflow用户

发布于 2015-04-02 11:13:58

我知道这个问题很老,但这可能对某些人有用。

在本例中,rAF(requestAnimationFrame)是无用的。因为你是用css转换滑动元素,并调用rAF一次。你必须循环属性的变化,逐帧调用rAF来优化浏览器的CPU和GPU性能。

关于rAF的主要思想:

当你想在没有css动画的情况下制作dom元素的动画时,你必须改变元素的样式属性(比如width,height,top,left等)。周期性地。

如果没有rAF,你必须使用setTimeout,setInterval函数来根据时间改变道具。但是浏览器不会优化这些进程,这可能会影响CPU和GPU的性能。

当您使用rAF时,现代浏览器可以使用更少的CPU和GPU来优化动画性能。

有用的链接:

requestAnimationFrame for Smart Animating

requestAnimationFrame

票数 3
EN

Stack Overflow用户

发布于 2015-04-02 12:22:13

不不是的。在现代浏览器中,所有动画、CSS过渡、CSS动画、SMIL、element.animate都由相同的内部引擎控制。浏览器将在下一个可用帧上启动您的动画。RAF和原生动画有不同的线程。RAF是为JavaScript动画设计的。该重写将只等待几毫秒,直到设置这些更改。在此之后,您的动画将由内部引擎控制。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13076540

复制
相关文章
requestAnimationFrame 的 Bug?
今天有一位同学,在群里问了这一个问题:requestAnimationFrame 的执行机制如何
落落落洛克
2021/05/24
1.3K0
requestAnimationFrame 的 Bug?
requestAnimationFrame简介
当我们写window.requestAnimationFrame(回调函数)时,浏览器会在下次重绘前执行回调函数。
前端GoGoGo
2018/08/27
8850
requestAnimationFrame简介
遇见requestAnimationFrame
今天,在读javascript异步编程的js事件深入理解部分的时候,了解到了requestAnimationFrame 这个api,在这里记录一下。 原文: setTimeout 和 setInterval 就是些不精确的计时工具。在Node中,如果只是想产生一个短时延迟,请使用 process.nextTick。在 浏 览 器 端 , 请 尝 试 使 用 垫 片 技 术 (shim ) ③ : 在 支 持requestAnimationFrame 的 浏 览 器 中 , 推 荐 使 用requestAni
吴裕超
2018/03/29
9000
requestAnimationFrame的使用
在Web应用中,实现动画效果的方法比较多,JavaScript 中可以通过定时器 setTimeout 来实现,css3 可以使用 transition 和 animation 来实现,html5 中的 canvas 也可以实现。除此之外,html5 还提供一个专门用于请求动画的 API,即  requestAnimationFrame(rAF),顾名思义就是 “请求动画帧”。 为了深入理解  rAF 背后的原理(后文的 rAF 均指的是 requestAnimationFrame),我们首先需要了解一下与之相关的几个概念:
javascript.shop
2019/09/04
1.1K0
setTimeout和requestAnimationFrame
JavaScript语言的一大特点就是单线程,也就是说,同一时间只能做一件事,前面的任务没做完,后面的任务只能等着。
木子星兮
2020/07/16
1.8K0
使用 requestAnimationFrame 实现动画
首先想到的是 setInterval/setTimeout,原理就是利用人眼的视觉残留和电脑屏幕的刷新,让元素以连贯平滑的方式逐步改变位置,最终实现动画的效果。
李振
2021/11/26
1K0
requestAnimationFrame 执行机制探索
上面的代码 1s 大约执行 60 次,因为一般的屏幕硬件设备的刷新频率都是 60Hz,然后每执行一次大约是 16.6ms。使用 requestAnimationFrame 的时候,只需要反复调用它就可以实现动画效果。
winty
2021/11/24
1.2K0
requestAnimationFrame 执行机制探索
css的2D转换
下面通过css实现动画效果,可以使用脚本化的css实现滑入,轮廓伸缩的列表,即动态的HTML,一个过时的说法DHTML
mySoul
2018/08/08
9270
requestAnimationFrame实现动画效果
html动画一般会采用css3的形式去做,当然也比较建议用css去做动画。但是有时候一些动画只能使用js来完成,常用的js动画方案是使用计时器来完成。编写动画循环的一个关键在于我们要延迟多长时间比较合适,如何设置时间才能让动画显得平滑顺畅,这个时间并不是越小越好,因为要遛狗足够的时间间隔来让浏览器产生渲染变化,否则就会变成跳跃感。
OECOM
2020/07/02
2K0
用于查询的日期类型转换帮助类
本文转载:http://www.cnblogs.com/iamlilinfeng/p/3378659.html
跟着阿笨一起玩NET
2018/09/19
8430
用于查询的日期类型转换帮助类
requestAnimationFrame & 定时器
屏幕刷新频率即图像在屏幕上更新的速度,即每秒图像更新的次数,它的单位是赫兹(Hz)。一般笔记本的值是60Hz。这个值受屏幕分辨率、屏幕尺寸、显卡影响。
用户3258338
2019/11/03
1.2K0
深入理解 RequestAnimationFrame
在Web应用中,实现动画效果的方法很多,Javascript 中可以通过SetInterval来实现,CSS 3可以使用 Transition 和 Animation 来实现,HTML 5 中Canvas 也可以实现,另外,HTML 5 还提供一个专门请求动画的API ,即RequestAnimationFrame,顾名思义就是请求动画帧,为了深入理解 RequestAnimationFrame 背后的原理,我们首先需要了解一下与之相关的几个概念:
越陌度阡
2020/11/26
1.9K0
CSS3d转换
三维坐标系 x轴:水平向右 右边是正值,左边是负值 y轴:垂直向下 下面是正值,上面是负值 z轴:垂直屏幕 往外面是正值,往里面是负值 如下图: 不过在我们css中y轴向上是为负的,y轴向下为正,与下图相反
切图仔
2022/09/08
4670
CSS3d转换
requestAnimationFrame 刨根问底
开头引用一段 Google Developer Rendering Performance:
程序员小猿
2021/01/19
5860
CSS3 转换(Transform)
在CSS中,允许元素实现 2D 和 3D的转换效果,主要包含 :旋转,缩放,移动,倾斜        
py3study
2020/01/14
8150
<Python脚本>批量转换less至css
安装了less之后后, 可以通过lessc 将单个.less文件转换为.css, 但less没有提供批量转换为css的命令, 如果不使用sublime, 或者webstorm提供的插件, 就得手动一个
zhaoolee
2018/06/14
6090
JS深入浅出 - requestAnimationFrame
早期 JS 定时动画:主要通过 setTimeout 和 setIntarval 实现。 HTML5 出现后:又出现了两种实现动画的方式,1. CSS 动画(transition、animation)2. H5的 canvas 实现。 与此同时,HTML5 还提供了一个专门用于请求动画的 API requesetAniamtionFrame(),统一了 DOM 动画、canvas动画、svg动画、webGL动画等的刷新机制。
Qwe7
2022/03/28
1.8K0
js动画requestAnimationFrame详解「建议收藏」
requestAnimationFrame() 他的作用就是代替定时器做更加流畅高性能的动画,做可以匹配设备刷新率的动画,他解决了定时器做动画时间间隔不稳定的问题(也就是解决定时器做动画不流畅的问题)。他的用法与setTimeout差不多。
全栈程序员站长
2022/09/27
8.5K0
【原创】CSS中元素的分类及转换
一.元素: css中将标签叫做元素 二.元素的分类: 块级元素:html、body、h1-h6、p、hr、div、pre、ul+li、ol+li等
零点
2023/03/03
5450
点击加载更多

相似问题

如何使我的图像响应,最大宽度不工作

23

图像对最大宽度属性没有响应。

20

图像的宽度和最大宽度属性

43

如何使IE支持最小宽度/最大宽度CSS属性?

35

最大高度和最大宽度的响应图像

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档