2016-08-08 5 views
-1

У меня есть элементКак сделать границу?

<div id="square"></div> 

Он имеет свойство перемещаться по документу

var square = document.getElementById("square"); 
    document.body.onkeydown = function(e) { 
    if (e.keyCode == 37) {left()} 
    if (e.keyCode == 38) {up()} 
    if (e.keyCode == 39) {right()} 
    if (e.keyCode == 40) {down()} 
} 

Как сделать функцию, которая не позволила движения, если square элемента находится ближе всего к документу границы? JSFiddle: https://jsfiddle.net/zutxyLsq/

+0

Итак, проверьте позицию, прежде чем переместить ее? – epascarello

+0

Это называется «Обнаружение столкновений», есть Google и узнать некоторые вещи – musefan

+0

@epascarello, поэтому у меня есть эта функция 'function checkBorder() { if (parseInt (getComputedStyle (square) ['left'], 10) <10 || parseInt (getComputedStyle (square) ['right'], 10) <10 || parseInt (getComputedStyle (square) ['top'], 10) <10 || parseInt (getComputedStyle (square) ['bottom'], 10) <10); } return false', но Если элемент близок к границе документа, другие функции перемещения не работают. –

ответ

0

Вы должны проверить, если оставить вне границ, как это:

function left() { 
    console.log('Left'); 
    var left = parseInt(square.style.left || getComputedStyle(square)['left'], 10); 
    if (left >= 50) { 
     square.style.left = (left - 50) + 'px'; 
    } 
} 
function right() { 
    console.log('Right'); 
    var left = parseInt(square.style.left || getComputedStyle(square)['left'], 10); 
    if (left+50+square.offsetWidth < window.innerWidth) { 
     square.style.left = (left + 50) + 'px'; 
    } 
} 

https://jsfiddle.net/zutxyLsq/3/

и то же вверх и вниз.