Как заставить предмет плавно двигаться

let EL = document.querySelector('.ball');
window.addEventListener('click' , function(event){
    EL.style.left = event.clientX + 'px';
    EL.style.top = event.clientY + 'px';

})

Здравствуйте, вот есть код с помощью которого можна методом клика заставить предмет двигаться на место клика , но как сделать чтобы предмет плавно двигался а не сразу перекидался на место клика ?


Ответы (3 шт):

Автор решения: Алексей Шиманский

Например воспользоваться методом setInterval внутри которого на каждой итерации будет прибавляться нужное количество пикселей к координате, а как только достигнет нужной точки воспользоваться clearInterval для остановки метода setInterval

Еще, для игр, часто используют requestAnimationFrame. Принцип примерно такой же как у setInterval, но гораздо эффективнее, производительнее и менее глючный

→ Ссылка
Автор решения: Redither

Можно воспользоваться CSS3 свойством transition, которое как раз отвечает за поведение анимации.

Например, попробуйте классу .ball прописать:

.ball {
    -webkit-transition: left 0.3s, top 0.3s;
            transition: left 0.3s, top 0.3s;
}

→ Ссылка
Автор решения: Rudi

Самый простой вариант добавить свойство transition в css..

let el = document.querySelector('.ball');
el.style.left = 0 + 'px';// чтобы при первом клике не было скачка
el.style.top = 0 + 'px';// чтобы при первом клике не было скачка

document.addEventListener('click', function(event) {
  el.style.left = event.clientX - 25 + 'px';
  el.style.top = event.clientY - 25 + 'px';
})
.ball {
  width: 50px;
  height: 50px;
  background: green;
  border-radius: 50px;
  position: absolute;
  transition: 1s cubic-bezier(.1, .65, .9, 1);
}
<div class='ball'></div>

→ Ссылка