如何设置div位置依赖于另一个div位置?

时间:2015-01-07 13:45:54

标签: javascript jquery html css

这是代码的html部分:

<div class="snake">
    <div class="body"></div>
</div>

下面的函数采用最后一个块,将其删除并创建另一个块以将其置于顶部。

//The snake turns right
var turnRight = function() {
    blocks_moved++;
    $('.snake').children().last().remove();
    $('<div></div>').addClass('body').prependTo('.snake').css('top', 0 + '%').css('left', xPos * blocks_moved * 1.2 + '%');
    $('.snake').children().removeClass('head');
    $('.snake').children().first().addClass('head');
...more code

使用下面的代码,我试图将蛇位置eqal设置为头部的位置,这样每当一个新的块成为头部时,蛇就会移动一个块。

//Set the snake position equal to head's position
var headPos = $('.snake').children().first().position();
    $('.snake').position(headPos);

        if (blocks_moved === length) {
            blocks_moved === 0;
        }
    }

当我调用函数turnRight();时,头部和身体会移动,但蛇会保持原位。我也试过.css()方法,但我没有成功。还有其他方法吗?

我用.offset()和定位解决了这个问题。这是一个实例:https://jsfiddle.net/dusth7gc/3/

1 个答案:

答案 0 :(得分:0)

使用.offset()和定位解决了这个问题。

var turnRight = function() {

    $('.body').css('background-color', 'gray');

    headPos_x = ($('.head').offset().left / $(window).width() * 100);
    headPos_y = ($('.head').offset().top / $(window).height() * 100);  

    $('<div></div>').addClass('body').prependTo('.snake').css('top', headPos_y + '%').css('left', headPos_x + helper_width * 1.2 + '%');

            $('.snake').children().last().remove();
            $('.snake').children().removeClass('head');
            $('.snake').children().first().addClass('head');



            $('.helper').css('top', $('.head').offset().top + 'px').css('left',$('.head').offset().left + 'px');

        if(collision($('.helper'), $('.meal')) === true) {
            $('.meal').remove();
            $('<div></div>').addClass('body').css('background-color', 'transparent').appendTo('.snake');
            foodCreate();
        }
}

以下是一个实例:https://jsfiddle.net/dusth7gc/3/