Задать вопрос
@anton99zel
29а класс средней школы №7

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

https://codepen.io/anon/pen/NBVvXg
Как сделать, чтобы div можно было смещать по нажатию соответствующей ссылки?
Можно нажимать бесконечное количество раз, нажатие влево и вниз смещает на 10px, а вправо или вверх на 5px.
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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';
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект