В примере в этой статье представлен конкретный код для реализации эффекта перетаскивания мышью в JavaScript. Конкретное содержимое
на этот раз выглядит следующим образом:
Я думаю, что сложность этого эксперимента заключается в том, чтобы сохранить неизменным относительное положение поля и мыши. Как добиться эффекта перетаскивания, нажимая и перемещая мышь
?
Нам нужно использовать три функции: onmousedown
, onmousemove
и onmouseup
, которые соответственно представляют нажатие, перемещение мыши и подъем мыши.
В функции обратного вызова нажатия мыши нам нужно получить начальное положение мыши через clientX
и clientY
. и через offsetLeft
и offsetTop
получает начальное положение поля, а затем вычисляет разницу между начальным положением мыши и начальным положением поля
в функции обратного вызова движения мыши , нам нужно получить текущую позицию; поле на основе разницы между положением мыши и ранее рассчитанным положением, а затем измените его левое и верхнее значения, не забудьте установить абсолютное положение (потому что я просто забыл...)
В функции обратного вызова mouselift , нам нужно очистить движение мыши и подъем мыши, установив для значений onmousemove
и onmouseup
значение null. Также
обратите внимание! ! !
И функция перемещения мыши, и функция подъема мыши должны быть записаны в функции нажатия мыши, потому что нам нужно спроектировать последующее поведение после действия нажатия мыши, и очень важный момент:
функция нажатия мыши — это p, а мышь Перемещение и поднятие мыши включены в документ,
потому что мы подразумеваем, что мышь перемещается не по букве p, а по всей странице.
Ключевые моменты, вероятно, следующие:
<!DOCTYPE html>. <html> <голова> <мета-кодировка="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, Initial-scale=1.0"> <title>Документ</title> <стиль> #коробка{ ширина: 100 пикселей; высота: 100 пикселей; цвет фона: аквамарин; радиус границы: 14 пикселей; box-shadow: 2px 2px 6px rgba(0,0,0,.3); /* Хорошие парни хотят двигаться и менять положение влево, не задавая позиционирование. . . */ позиция: абсолютная; } </стиль> </голова> <тело> <div id="box"></div> <скрипт> let box=document.getElementById("коробка"); box.onmousedown=функция(событие){ пусть disx=event.clientX-box.offsetLeft; let disy=event.clientY-box.offsetTop; //Это не box.onmousemove, а document.onmousemove document.onmousemove=функция(событие){ box.style.left=event.clientX-disx+'px'; box.style.top=event.clientY-disy+'px'; } //Написано в omniusedown document.onmouseup=function(){ //Обе из них должны быть установлены на ноль document.onmousemove = null; document.onmouseup=null; вернуть ложь; } } </скрипт> </тело> </html>
Рекомендации по теме: [Видеоруководство по JavaScript]
Выше представлено подробное содержимое js для имитации событий перетаскивания мышью (с примерами изображений и текста). Для получения дополнительной информации обратите внимание на другие соответствующие статьи на китайском веб-сайте PHP. !