0

我在 div 中放置了一个动画 div,我只希望这个 div 能够在它的父级空间中移动。我该怎么做呢?

简单地说:我希望青蛙包含在青蛙中。

HTML

<div id="frogger">                          <!-- Animate start -->
  <button id="left">&laquo;</button> <button id="right">&raquo;</button>
    <div id="frog">
    </div>
</div>                                      <!-- Animate end -->

CSS

#frogger
{
    width: 500px;
    height: 500px;
    border: solid;
    margin: 0 auto;
}

#frog
{
  position:relative;
  background-color:#abc;
  left:50px;
  width:90px;
  height:90px;
  margin:5px;
}

Javascript

$("#right").click(function(){
    if ($(':animated').length) {
        return false;
    } else {
        $("#frog").animate({"left": "+=50px"}, {queue: false}, "slow");
    }   
});

$("#left").click(function(){
    if ($(':animated').length) {
        return false;
    } else {
        $("#frog").animate({"left": "-=50px"}, {queue: false}, "slow");
    }
});
4

2 回答 2

0

一种方法是测试当前位置,如果太靠近边缘则不移动:

var $frog = $("#frog");

$("#right").click(function(){
    if (parseInt($frog.css('left')) >= 400 || $(':animated').length) {
        return false;
    } else {
        $frog.animate({"left": "+=50px"}, {queue: false}, "slow");
    }   
});

$("#left").click(function(){

    if (parseInt($frog.css('left')) < 50 || $(':animated').length) {
        return false;
    } else {
        $frog.animate({"left": "-=50px"}, {queue: false}, "slow");
    }
});

演示:http: //jsfiddle.net/n3NgY/

当然,您可以通过以编程方式确定青蛙及其容器的宽度来使其更加健壮,但出于快速演示的目的,我只是硬编码了适当的左右边界数字。

于 2012-05-31T04:46:42.130 回答
0

是的,您需要做一些简单的碰撞检测,不幸的是,仅 CSS 不允许您这样做。但是您可以像这样动态地执行此操作:

$("#right").click(function(){
    var frog_right = $("#frog").offset().left + $("#frog").width();
    var frogger_right = $("#frogger").offset().left + $("#frogger").width();

    if ($(':animated').length || frog_right >= frogger_right ) {
        return false;
    } else {
        $("#frog").animate({"left": "+=50px"}, {queue: false}, "slow");
    }   
});

$("#left").click(function(){
    var frog_left = $("#frog").offset().left;
    var frogger_left = $("#frogger").offset().left;

    if ($(':animated').length || frog_left <= frogger_left) {
        return false;
    } else {
        $("#frog").animate({"left": "-=50px"}, {queue: false}, "slow");
    }
});
于 2012-05-31T04:48:02.740 回答