1

我正在尝试创建一个轮播,但是在我从 div 列表的末尾删除元素并将其应用到开头之后,它只会将另一个元素向下移动而不占用列表开头的空间。请看看你能不能在这件事上帮助我。

代码是:使用按钮启动轮播。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="jquery-1.3.2.js"></script>
<script>
$(function(){
    $("#but").click(function(){
        $(".slides").animate({left: "+=170"},2000);
        //$('.wrap div').last().before$('.wrap div').first(;
        timer=setInterval(function() {
            //$(".wrap div:first-child").before($(".wrap div:last-child"))
            $( ".wrap div:first-child" ).before($( ".wrap div:last-child" ));
        },2000);
    });
});
</script>
<style>
.wrap
{
border:1px solid red;   
width:1000px;   
overflow:hidden;
height:100px;   

}
.slides
{
width:150px;
height:150px;
border:1px solid #C6F;  
margin-left:2px;
margin-right:2px;
float:left;
margin-top:2px;
margin-bottom:2px;  
text-align:center;
position:relative;

}
</style>
</head>
<body>
<div class="container">
  <div class="wrap">
    <div class="slides">1</div>
    <div class="slides">2</div>
    <div class="slides">3</div>
    <div class="slides">4</div>
    <div class="slides">5</div> 
  </div>
</div>
<button id ="but">hello</button>
</body>
</html>
4

3 回答 3

0

可能有更好的方法,但也许这会让你开始:

$("#but").click(function () {
    timer = setInterval(function () {
        $(".slides").animate({
            left: "+=170"
        }, 2000);
        $(".wrap div:first-child").before($(".wrap div:last-child"));
        $(".slides").animate({
            left: "-=170"
        }, 1);
    }, 2010);
});
于 2013-09-18T19:28:48.180 回答
0

你不能只用一种方式制作动画。您正在添加 170 像素并且从不减去它们。当您将它插入到列表的前面时,您需要立即将其向左移动,然后慢慢将其动画化到视图中

<script>
$(function(){
    $("#but").click(function(){
        //$('.wrap div').last().before$('.wrap div').first(;
        timer=setInterval(function() {
            //$(".wrap div:first-child").before($(".wrap div:last-child"))
            $(".slides").animate({left: "-=170"},0);
            $(".slides").animate({left: "+=170"},2000);
            $( ".wrap div:first-child" ).before($( ".wrap div:last-child" ));
        },2000);
    });
});
</script>
于 2013-09-18T19:33:01.677 回答
0

1)当动画完成时,所有幻灯片都有 style="left:170px" 你需要将它设置为 0

2)如果您希望在单击时更改 div,那么您应该使用 setTimeout 并将时间间隔设置得比动画中的大一点,否则它有时会不起作用(最后一个动画滴答和归零之间的竞争条件)。

3) 170px 太大了,应该是 155px。

div_width 150px + 边框 1px + 边距(左起)2px + 边距(右起)2px。

于 2013-09-18T19:46:25.460 回答