感谢您的关注!
据我所知(可能不准确),JavaScript的requestAnimationFrame方法类似于setTimeout,但它不是等待一定的时间,而是等待下一帧被渲染。
这可以用于很多事情,但我在这里想要实现的是基于CSS的JavaScript控制的淡入淡出效果。以下是代码及其说明:
//This line makes the element displayed as block from none
//but at this point it has an opacity value of 0
this.addClass('element__displayed');
//here i am waiting a frame so that the previously added
//display value takes effect
window.requestAnimationFrame(function(){
//adding opacity: 1 for fade effect
this.addClass('element__visible');
}.bind(this));
我的问题在于,即使元素已经设置了css过渡效果并且我等待显示值被渲染,但我没有得到过渡效果,它只是突然出现。
(如果我使用setTimeout(..., 1000/60),它可以工作,但与requestAnimationFrame相比,setTimeout会成为性能瓶颈)
请不要试图给出淡入淡出效果的替代解决方案,因为我的问题不在于效果,而在于为什么animationFrame无法工作!
谢谢!
requestAnimationFrame
。你可以使用visibility
替代display
。[https://jsfiddle.net/46taexkp/] - DavidDomain