首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重复(循环) Jquery fadein - fadeout - fadein

如何重复(循环) Jquery fadein - fadeout - fadein
EN

Stack Overflow用户
提问于 2012-02-17 05:46:34
回答 3查看 39.9K关注 0票数 6

我正在努力使用我的第一个jQuery脚本。我在我的页面上有一个DIV,它被设置为通过CSS隐藏。然后,我运行这个脚本,让它淡入、淡出,然后再淡入:

代码语言:javascript
复制
<script type="text/javascript">
  (function($) {
    $(function() {
      $('#abovelogo').fadeIn(1000).delay(2000).fadeOut(1500).delay(2000).fadeIn(1500);
    }); 
  })(jQuery);
</script>

这部分运行得很好。现在,我的问题是:

我如何改变它,使这个脚本运行循环(永远),而不是只运行一次?

提前感谢!-Nate

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-17 05:49:07

将您的代码放在setInterval

代码语言:javascript
复制
$(function () {
    setInterval(function () {
        $('#abovelogo').fadeIn(1000).delay(2000).fadeOut(1500).delay(2000).fadeIn(1500);
    }, 5000);
});

因为只要页面是活动的,你就会运行它,所以你应该尽你所能来优化你的代码,例如,你可以在间隔之外缓存选择:

代码语言:javascript
复制
$(function () {
    var $element = $('#abovelogo');
    setInterval(function () {
        $element.fadeIn(1000).delay(2000).fadeOut(1500).delay(2000).fadeIn(1500);
    }, 5000);
});

setInterval文档:https://developer.mozilla.org/en/window.setInterval

此外,您可以在每个动画中使用回调函数来逐个调用动画,而不是使用.delay()

代码语言:javascript
复制
$(function () {
    var $element = $('#abovelogo');
    setInterval(function () {
        $element.fadeIn(1000, function () {
            $element.fadeOut(1500, function () {
                $element.fadeIn(1500)
            });
        });
    }, 5000);
});

这是一个演示:http://jsfiddle.net/xsATz/

您还可以使用setTimeout并递归调用函数:

代码语言:javascript
复制
$(function () {
    var $element = $('#abovelogo');
    function fadeInOut () {
        $element.fadeIn(1000, function () {
            $element.fadeOut(1500, function () {
                $element.fadeIn(1500, function () {
                    setTimeout(fadeInOut, 500);
                });
            });
        });
    }

    fadeInOut();
});

这是一个演示:http://jsfiddle.net/xsATz/1/

票数 22
EN

Stack Overflow用户

发布于 2012-02-17 07:25:03

代码语言:javascript
复制
<script type="text/javascript">
function doFade() {
    $('.foo').toggleClass('fooAct');
    setTimeout(doFade, 1000);
}
$(document).ready(function(){
    doFade();
});
</script>
<style>
div {
height:200px;
background:black;   
}
.foo {
transition: opacity 2s;
-moz-transition: opacity 2s; /* Firefox 4 */
-webkit-transition: opacity 2s; /* Safari and Chrome */
-o-transition: opacity 2s; /* Opera */
opacity:0.1;
}
.fooAct {
opacity:1;
}
</style>
<div class="foo"></div>

只是想象力。你可以用css3做到这一点。我希望这也能帮助你。做这样的事情,css应该比jQuery更适合浏览器性能。

票数 1
EN

Stack Overflow用户

发布于 2013-02-20 03:28:12

我对setTimeout方法有一些问题。也许用“trigger”更好:

代码语言:javascript
复制
var $element = $('.banner');
$element.bind('cusfadeOut',function() {
        $(this).fadeOut(500,function() {
                $(this).trigger('cusfadeIn');
        });
});
$element.bind('cusfadeIn',function() {
        $(this).fadeIn(1000, function() {
                $(this).trigger('cusfadeOut');
        });
});
$element.trigger('cusfadeOut');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9319573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档