如何动态地将div移动到另一个div

时间:2013-11-22 20:12:56

标签: javascript jquery animation

我有下面的代码,我想知道如何动态地将div移动到另一个?我的想法是创造一个生活统治者,每年将成为统治者的一个地方。

<!DOCTYPE html>
<html lang='pt-BR'>
<head>
    <title>Ruler</title>
    <style>
        .rule{
            height: 40px;
            position: relative;
            width: 100%;
        }
        .unit {
            position: absolute;
            bottom: 0; 
            border-left: 2px solid black;
            border-right: 2px solid black;
            border-bottom: 2px solid black;
            height: 15px;
            width: 16px;
            padding-top: calc(100%-15px);
            float: left;
        }

        .box {
            position: absolute;
            background-color: yellow;
            border: 2px solid black;
            height: 30px;
            width: 10px;
            left: 1px;
            top: -20px;
        }
    </style>
</head>
<body>
    <div class="rule">
        <div id="d1" style="left: 0px" class="unit"><div class="box"></div></div>
        <div id="d2" style="left: 18px" class="unit"></div>
        <div id="d3" style="left: 36px" class="unit"></div>
        <div id="d4" style="left: 54px" class="unit"></div>
        <div id="d5" style="left: 72px" class="unit"></div>
    </div>



    <input type="button" id="back" value="<<"/>
    <input type="button" id="forward" value=">>"/>
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script>
        $(function(){
            $("#forward").click(function(){
                    $(".box").parent().next().html($(".box"));
            });
            $("#back").click(function(){
                    $(".box").parent().prev().html($(".box"));
            });

        });
    </script>
</body>

我试过了:

if(Math.abs(parseFloat($(".box").css("margin-left"))) < (11 + 18 * 3)){ 
  $(".box").animate({"marginLeft":"+=18px"});
}

但是,我不知道它是哪个div。

感谢。

1 个答案:

答案 0 :(得分:0)

在div之外移动div类“box”。

<div class="rule">
    <div class="box"></div>
    <div id="d1" style="left: 0px" class="unit"></div>
    <div id="d2" style="left: 18px" class="unit"></div>
    <div id="d3" style="left: 36px" class="unit"></div>
    <div id="d4" style="left: 54px" class="unit"></div>
    <div id="d5" style="left: 72px" class="unit"></div>
</div>

然后应用这些样式

.rule{
        height: 40px;
        position: relative;
        width: 100%;
    }
    .unit {
        position: absolute;
        bottom: 0; 
        border-left: 2px solid black;
        border-right: 2px solid black;
        border-bottom: 2px solid black;
        height: 15px;
        width: 16px;
        padding-top: calc(100%-15px);
        float: left;
    }

    .box {
        position: absolute;
        background-color: yellow;
        border: 2px solid black;
        height: 30px;
        width: 10px;
        left: 3px;
        bottom: -0px;
    }

然后你的javascript就可以了:

$('.box').click(function() {
    var $box = $(this);

    $box.animate({"marginLeft":"+=18px"});
});

看到这个小提琴:http://jsfiddle.net/3K5mw/

这是找到你的div参考的最后小提琴:http://jsfiddle.net/3K5mw/2/