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



这是代码的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/

用.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/。

最新更新