如何在不压下其他元素的情况下将div元素添加到包装容器中

时间:2013-09-18 19:12:15

标签: jquery

我正在尝试创建一个轮播但是在我从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>

3 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分: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>

答案 2 :(得分:0)

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

2)如果你想在点击时更改div,那么你应该使用setTimeout并设置比动画更大的时间间隔,否则它有时不起作用(上次动画刻度和归零之间的种类条件)。

3)170px太大了它是155px。

div_width 150px + border 1px + margin(from left)2px + margin(from right)2px。