javascript - 创建多个图像 slider

标签 javascript jquery html css

我有一个图像 slider ,但我需要在同一页面上使用多个 slider 。是否可以复制我的函数以使其不干扰原始函数?

HTML

<div id="slideshow">
   <div>
     <img src="http://farm6.static.flickr.com/5224/5658667829_2bb7d42a9c_m.jpg">
   </div>
   <div>
     <img src="http://farm6.static.flickr.com/5230/5638093881_a791e4f819_m.jpg">
   </div>
</div>

CSS

#slideshow { 
    margin: 50px auto; 
    position: relative; 
    width: 240px; 
    height: 240px; 
    padding: 10px; 
}
#slideshow > div { 
    position: absolute; 
    top: 10px; 
    left: 10px; 
    right: 10px; 
    bottom: 10px; 
}

JQuery

$(function() {

            $("#slideshow > div:gt(0)").hide();

            setInterval(function() { 
              $('#slideshow > div:first')
                .fadeOut(1000)
                .next()
                .fadeIn(1000)
                .end()
                .appendTo('#slideshow');
            },  3000);

});

最佳答案

我不确定为此是否真的需要创建您自己的函数。 Horen 给出了一个很好的答案,但是在实现它时,您意识到需要稍微调整代码以处理区分将 child 附加到自己的幻灯片或另一个幻灯片的代码。为此,我使用了 .each() 函数来“沙盒”每个幻灯片。

当您使用两张以上的图片时,也会出现错误。我处理这个问题的方法是在加载时隐藏除第二张图片以外的所有图片,而不是只隐藏第一张图片。

这是我使用的最终标记:

演示:http://jsfiddle.net/F4nTJ/2/

CSS

.slideshow { 
    margin: 50px auto; 
    position: relative; 
    width: 240px; 
    height: 240px; 
    padding: 10px; 
}
.slideshow > div { 
    position: absolute; 
    top: 10px; 
    left: 10px; 
    right: 10px; 
    bottom: 10px; 
}

html

<div class="slideshow">
   <div>
       <img src="http://farm6.static.flickr.com/5224/5658667829_2bb7d42a9c_m.jpg"/>
   </div>
   <div>
       <img src="http://farm6.static.flickr.com/5230/5638093881_a791e4f819_m.jpg"/>
   </div>
</div>
<div class="slideshow">
   <div>
       <img src="http://farm6.static.flickr.com/5230/5638093881_a791e4f819_m.jpg"/>
   </div>
   <div>
       <img src="http://farm6.static.flickr.com/5224/5658667829_2bb7d42a9c_m.jpg"/>
   </div>
</div>

JavaScript

$(function() {
    $(".slideshow").each(function(){$(this).children().not(":nth-child(2)").hide();});

    setInterval(function() {
        $('.slideshow').each(function(){
            $(this).children(':first')
            .fadeOut(1000)
            .next()
            .fadeIn(1000)
            .end()
            .appendTo($(this));
        });
    },  3000);
});

关于javascript - 创建多个图像 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749644/

相关文章:

javascript - Material Design Slide Toggle 没有 event.StopPropagation,我应该使用什么?

javascript - 如何使用 HTML5 输入类型 'number' 在 angularjs 中制作小时和分钟选择器

javascript - redis.exceptions.ResponseError : MOVED error in redis set operation 错误

javascript - 如何从javascript中隐藏字段的值中删除单引号

javascript - 如何突破 .each() 并为函数返回一个值

选择同名元素时出现 JQuery 语法错误

javascript - 在 X-Editable jQuery 库生成的 Textarea 字段上运行 Textarea Resizer jQuery 插件

javascript - 使用 Firebase、React-Native、Redux 进行数据库 .on 调用的约定?

javascript - 我怎样才能使dynatree标题中的跨度元素可点击

html - 如何将按钮链接到另一个页面?