javascript - 将幻灯片中的每个单词一一淡入淡出

标签 javascript jquery fadein

我有一个函数可以将每个单词一一淡入淡出。我正在尝试调用此函数,而不是为我的幻灯片调用 fadeIn,但我不知道在哪里调用该函数来使其工作。

我创建了一个 fiddle http://jsfiddle.net/d6r7gffs/

我希望幻灯片过渡,然后将每个单词一一淡入淡出,而不是在所有内容中过渡淡入淡出,然后在当前运行时将每个单词一一淡入淡出。

var $slider = $('.example ul'); // class or id of carousel slider
        var $slide = 'li'; // could also use 'img' if you're not using a ul
        var $transition_time = 1000; // 1 second
        var $time_between_slides = 8000; // 8 seconds

        function slides(){
            return $slider.find($slide);
        }

        slides().fadeOut();

        // set active classes
        slides().first().addClass('active');
        slides().first().fadeIn($transition_time, fadeWordsIn);


        // auto scroll 
        $interval = setInterval(function() {

            var $i = $slider.find($slide + '.active').index();

            slides().eq($i).removeClass('active');
            slides().eq($i).fadeOut($transition_time);

            if (slides().length == $i + 1) $i = -1; // loop to start

                slides().eq($i + 1).fadeIn($transition_time, fadeWordsIn);
                slides().eq($i + 1).addClass('active');

            }, $transition_time +  $time_between_slides

        );

        function fadeWordsIn() {
            var $el = $('.example ul li.active span'), text = $.trim($el.text()),
                words = text.split(" "), html = "";

            for (var i = 0; i < words.length; i++) {
                html += "<span>" + words[i] + ((i+1) === words.length ? "" : " ") + "</span>";
            };
            $el.html(html).children().hide().each(function(i){
              $(this).delay(i*200).fadeIn(700);
            });
            $el.find("span").promise().done(function(){
                $el.text(function(i, text){
                   return $.trim(text);
                });            
            });
        }

最佳答案

我更新了 fiddle 。 http://jsfiddle.net/d6r7gffs/5/是自动播放并且 http://jsfiddle.net/d6r7gffs/4/包含在一个函数中,因此您可以在 slider 到达末尾时重新启动 slider 。

我稍微简化了代码。另外,在您的示例中确实不清楚什么是幻灯片,什么是线条。该行具有 position:absolute;,因此它们会出现在彼此的顶部(这些应该是幻灯片吗?)。不管怎样,我给了 ul 类 slide 以便清楚示例中的元素应该是什么。如果这不是您的本意,您应该能够了解如何根据您的需求进行修改。

(function ($) {
    var linePause = 2000;
    var wordPause = 100;
    var slidePause = 8000;

    //this will execute on load to parse the words into spans
    $('.example ul.slide > li').each(function(){
        var words = $(this).html().split(' ');
        $(this).html('').hide();
        for(var i = 0; i < words.length; i++){
            $(this).append($('<span></span>')
                .text(words[i] + (i+1 == words.length ? '' : ' '))
                .hide());
        }
    });
    //this will run the animation on the created spans
    (function showNextSlide(slide){
        slide.eq(0).fadeIn(500, function(){
            (function showNextLine(line){   
                line.eq(0).fadeIn(500, function(){
                    (function showNextWord(word){
                        word.eq(0).fadeIn(wordPause, function(){
                            (word=word.slice(1)).length && showNextWord(word);
                        });
                    })(line.eq(0).find('span'));
                })
                .delay(linePause)
                .queue(function(){
                    (line=line.slice(1)).length && showNextLine(line);
                    $(this).dequeue();
                });
            })(slide.eq(0).find('li'));
        })
        .delay(slidePause)
        .fadeOut(500, function(){
            (slide=slide.slice(1)).length && showNextSlide(slide);
        });
    })($('.slide'))
})(jQuery);

将其视为每个循环的嵌套(我知道这是递归,但它的建模方式相同): 对于 slider 中的每张幻灯片 对于幻灯片上的每一行 对于行上的每个单词。

如果您需要更多说明,请告诉我,我很乐意为您提供帮助。

关于javascript - 将幻灯片中的每个单词一一淡入淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118363/

相关文章:

javascript - 调用 .datatable 时无法获取未定义或 null 引用的属性 'aDataSort'

html - CSS 过渡 - 先滑动菜单,然后淡入淡出文本

javascript - 无法将模型添加到主干集合

javascript - 使用 JavaScript 将 HTML 表导出到 CSV 时保留前导零

jquery - 使用jQuery一次性获得YouTube或Vimeo缩略图

javascript - 组合多个 jQuery 对话框选择器

jquery - bxslider 淡入淡出模式确实淡出,但 "pops"淡入,我做错了什么?

Javascript 淡入没有明显的动画效果

javascript - CoffeeScript 窗口

javascript - 使用 Safari 扩展替换页面加载前的请求 URL