@anton99zel
29а класс средней школы №7

Как смещать div кликами?

https://codepen.io/anon/pen/NBVvXg
Как сделать, чтобы div можно было смещать по нажатию соответствующей ссылки?
Можно нажимать бесконечное количество раз, нажатие влево и вниз смещает на 10px, а вправо или вверх на 5px.
  • Вопрос задан
  • 137 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Добавляем кнопкам атрибут, который будет указывать, на сколько какую координату надо изменить:

<button data-move="-10,0">left</button>
<button data-move="10,0">right</button>
<button data-move="0,-10">up</button>
<button data-move="0,10">down</button>
<button data-move="10,10">right down</button>
<button data-move="20,-5">fast right slow up</button>

Пишем обработчик клика, где считываем значение атрибута, вычисляем и назначаем новые значения координат:

$(document).on('click', '[data-move]', function() {
  const [ dx, dy ] = this.dataset.move.split(',').map(Number);
  $('#overlay')
    .css('left', (i, val) => `${parseInt(val) + dx}px`)
    .css('top', (i, val) => `${parseInt(val) + dy}px`);
});

// или, к чёрту jquery

document.addEventListener('click', e => {
  const { move } = e.target.dataset;
  if (move) {
    const block = document.querySelector('#overlay');
    const { left, top } = getComputedStyle(block);
    const [ dx, dy ] = move.split(',').map(n => +n);
    block.style.left = parseInt(left) + dx + 'px';
    block.style.top = parseInt(top) + dy + 'px';
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы