我正在动画三个元素,使它们的淡入淡出看起来重叠。使用setInterval进行循环,并使用setTimout进行分步,我的当前代码如下:
标记:
<div class="contents">
<p class="content">Lorem ipsum dolor sit amet, vidisse deseruisse vim an, mel ad dolores accusata deseruisse. Integre civibus comprehensam his at. Tibique iracundia cu vel, has at luptatum scriptorem. Autem causae omnesque eos te. Mel ad reque noster. Feugiat eleifend maiestatis ut per, maluisset consulatu est ea.</p>
<p class="content">Sea no cibo praesent. Partem scribentur te eum. Ius in odio mucius, praesent delicatissimi vis ei, mel eu iuvaret honestatis. Cu tantas omnium necessitatibus eam.</p>
<p class="content">Ut mea ubique putant perfecto. Debet audiam electram vis eu, doctus contentiones ea usu. Cu qui legere possim corrumpit. Quo utinam disputando te, vix decore accusam reprehendunt ex, vis eu mutat delenit. Mel ad nulla vivendum, reprimique voluptatibus et sea.</p>
</div>
动画:
var updater = function(el){
var $el = $(el);
$el.fadeTo(500, 0, function(){
// Update content here
$el.fadeTo(500, 1);
})
};
var reviewTimer = window.setInterval(updateReviews, 3000);
function updateReviews() {
$.each( $('.content'), function(i, el){
var $this = $(el);
setTimeout( function(){
updater($this)
}, 0 + ( i * 250 ));
});
};
var updater = function(el){
var $el = $(el);
$el.fadeTo(500, 0, function(){
// Update content here
$el.fadeTo(500, 1);
})
};
var reviewTimer = window.setInterval(updateReviews, 3000);
function updateReviews() {
$.each( $('.content'), function(i, el){
var $this = $(el);
setTimeout( function(){
updater($this)
}, 0 + ( i * 250 ));
});
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="contents">
<p class="content">Lorem ipsum dolor sit amet, vidisse deseruisse vim an, mel ad dolores accusata deseruisse. Integre civibus comprehensam his at. Tibique iracundia cu vel, has at luptatum scriptorem. Autem causae omnesque eos te. Mel ad reque noster. Feugiat eleifend maiestatis ut per, maluisset consulatu est ea.</p>
<p class="content">Sea no cibo praesent. Partem scribentur te eum. Ius in odio mucius, praesent delicatissimi vis ei, mel eu iuvaret honestatis. Cu tantas omnium necessitatibus eam.</p>
<p class="content">Ut mea ubique putant perfecto. Debet audiam electram vis eu, doctus contentiones ea usu. Cu qui legere possim corrumpit. Quo utinam disputando te, vix decore accusam reprehendunt ex, vis eu mutat delenit. Mel ad nulla vivendum, reprimique voluptatibus et sea.</p>
</div>
这个fiddle在大多数情况下似乎表现得不错,但在我的实际例子中,它的动画效果很差(通常在3-10 fps左右)。页面上还有一个自动滑块,可能也是问题的原因。
我该如何解决这个问题?
setTimeout
和jQuery动画-它们不同步,事件最终会重叠。 - Alnitak