使用JQuery旋转文本会闪烁

Rotating text using JQuery is flickering

本文关键字:闪烁 文本 旋转 JQuery 使用      更新时间:2023-09-26

我创建了一个文本旋转器,它使用速度和间隔来确定旋转文本的速度和时间。一切似乎都很好,只是我唯一的问题是过渡之间的闪烁。换言之,我可以把新旧条目放在一起看。有人能帮我避免这种情况吗?

我的JSFIDDLE在这里

(function($) {
    $(document).ready(function(){
        //<![CDATA[
        (function($) {
            $.fn.rotator = function(settings) {
                settings = jQuery.extend({
                    interval: 5000,
                    speed:800,
                }, settings);
                return this.each(function() {
                    var $t = $(this),
                        $item = $t.children().addClass('item').hide();
                    $t.addClass('rotator');
                    if ($item.length > 1) {
                        $item.first().addClass('current').fadeIn(settings.speed);
                        setInterval(function() {
                            var c = $t.find('.current');
                            if (c.next().length === 0) {
                                c.removeClass('current').fadeOut(settings.speed);
                                $item.first().addClass('current').fadeIn(settings.speed);
                            } else {
                                c.removeClass('current').fadeOut(settings.speed).next().addClass('current').fadeIn(settings.speed);
                            }
                        }, settings.interval);
                    }
                });
            };
        })(jQuery);
        // Execute here!
        $(function() {
            $('#slider').rotator();
        });
        //]]> 
    });
})(jQuery);

将所有内容放入fadeOut()的回调函数中效果良好:

c.fadeOut(settings.speed, function () {
  $(this).removeClass('current')
         .next().addClass('current')
         .fadeIn(settings.speed)
});

Fiddle:http://jsfiddle.net/5p7dych6/
更新的Fiddle:http://jsfiddle.net/c6yrzsvr/