无限自动滚动图像

时间:2018-02-21 07:33:25

标签: javascript css animation scroll

我想制作一个自动滚动图像。这是我尝试过的。

Scrolling image

这是我的代码。

<style> 
   .scroll_container {
        width: 100%;
        height: 200px;
        /* background-color: #ddd; */
        overflow: hidden;
    }
    .ads_box_holder {
        width: 100%;
        white-space: nowrap;
        min-width:100%; 
        width: auto !important; 
        width: 100%;
    }
    .ads_box {
        display: inline-block;
        position: relative;
        top: 0;
        left: 0;
        width: 190px;
        height: 200px;
        padding: 10px 10px;
        margin-right: 10px;
    }
    .ads_box img {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        animation: slide 20s infinite;
    }

    @keyframes slide {
        0%{ transform:translateX(0px) }
        10%{ transform:translateX(-200px) }
        20%{ transform:translateX(-400px) }
        30%{ transform:translateX(-600px) }
        40%{ transform:translateX(-800px) }
        50%{ transform:translateX(-1000px) }
        60%{ transform:translateX(-1200px) }
        70%{ transform:translateX(-1400px) }
        80%{ transform:translateX(-1600px) }
        90%{ transform:translateX(-1800px) }
        100%{ transform:translateX(0px) }
    }
<style>
<div class="scroll_container">
    <div class="ads_box_holder">
        <div class="ads_box"><img src="images/ads.png"></div>
        <div class="ads_box"><img src="images/blur.jpg"></div>
        <div class="ads_box"><img src="images/foot.jpg"></div>
        <div class="ads_box"><img src="images/body.jpg"></div>
        <div class="ads_box"><img src="images/s.png"></div>
        <div class="ads_box"><img src="images/menu.jpg"></div>
        <div class="ads_box"><img src="images/face.jpg"></div>
        <div class="ads_box"><img src="images/c.jpeg"></div>
        <div class="ads_box"><img src="images/foot2.jpg"></div>
        <div class="ads_box"><img src="images/b.jpg"></div>
    </div>
</div>

现在,我使用了keyframe css。因此,当图像一个接一个地向左移动时,右侧有空白空间,如下所示

---------
|       |
| image |  empty space are left here
|       |
---------

在现实中,我想动态添加我的图像,图像可能超过20张图像。所以,当图像动态添加时,我不确定这个keyframes是否正常。

我想将空白空间替换为此框内的所有图像。 因此,没有空的空间,图像总是一个接一个地滚动。 但是,我不知道在ads_box_holder div中找到空格时如何替换图像。

我删除了css动画,并尝试使用这样的javascript。

<script>
$(document).ready(function(){
    var childCount = $(".ads_box_holder :visible").children().length;
    var move = 0;
    var hideImageTime = 0;
    window.setInterval(function(){
        hideImageTime += 1;
        move += 200;
        $(".ads_box_holder").css({
            "margin-left":-move+"px",
        });
        if(hideImageTime > childCount) {
            jQuery('.ads_box_holder .ads_box').each(function(){
                var next = jQuery(this).next();
                count += 1;
                if (!next.length) {
                    next = jQuery(this).siblings(':first');
                }
                next.children(':first-child').clone().appendTo(jQuery(this));
            });
        }
    },2000);
});
</script>

但是当我使用keyframe css时,结果相同。

注意:图像移动样式没问题,但我只想在ads_box_holder内找到空白区域时放置所有图像。

我不知道如何实现我想要的。我真的很感激任何建议。

1 个答案:

答案 0 :(得分:0)

最后我得到了我想要的东西。克隆第一个孩子并在ads_box_holder的最后追加并删除第一个孩子。

$(document).ready(function(){

        function animation() {
            $('.ads_box_holder').children(':first').clone().appendTo(".ads_box_holder");
            $('.ads_box_holder').children(':first').css({
                "margin-left":"-204px",
                "-webkit-transition": "all 0.7s ease-out",
                   "-moz-transition": "all 0.7s ease-out",
                    "-ms-transition": "all 0.7s ease-out",
                     "-o-transition": "all 0.7s ease-out",
                        "transition": "all 0.7s ease-out"
            });
            setTimeout(function(){$('.ads_box_holder').children(':first').remove()},1500);
        }
        window.setInterval(animation,2000);
});

我希望这会对某人有所帮助。