Показать сообщение отдельно
  #4 (permalink)  
Старый 08.09.2022, 15:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

<div id="block" style="width: 100px; height: 100px; background:green; transition: left 1s"></div>
<script src="https://unpkg.com/debounce"></script>
<script>
const block = document.querySelector('#block');

block.addEventListener('mousedown', function(e) {
  const shiftX = e.clientX - this.getBoundingClientRect().left;
  const self = this;
  let speed = 1;

  this.style.position = 'absolute';
  this.style.left = e.pageX - shiftX + 'px';

  const onMouseMove = debounce((e) => {
    self.style.left = e.pageX - shiftX + 'px';
  }, 300);

  function onMouseUp() {
    document.removeEventListener('mousemove', onMouseMove);
    document.removeEventListener('mouseup', onMouseUp);
  }

  document.addEventListener('mousemove', onMouseMove);
  document.addEventListener('mouseup', onMouseUp);
});

block.addEventListener('dragstart', (e) => {
  e.preventDefault();
});
</script>
__________________
29375, 35
Ответить с цитированием