国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

原生JS實現拖拽功能

瀏覽:84日期:2024-04-09 16:08:23

本文實例為大家分享了JS實現拖拽功能的具體代碼,供大家參考,具體內容如下

拖拽的原理:三個事件 onmousedownonmousemoveonmousemove

1、鼠標按下,觸發onmousedown,獲取鼠標坐標x,y,獲取元素坐標x,y

通過event.clientX、event.clientY獲取鼠標位置的坐標

let x = e.clientX - box.offsetLeft; //鼠標點擊坐標距離盒子左邊緣的距離let y = e.clientY - box.offsetTop; //鼠標點擊坐標距離盒子上邊緣的距離

2、設置元素left、top值,(元素要設置position:absolute)

box.style.left = ev.clientX - x + ’px’;box.style.top = ev.clientY - y + ’px’;

3、放開鼠標取消dom事件

下面是詳細代碼:我只開了橫向移動

<!DOCTYPE html><html lang='en'> <head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <meta http-equiv='X-UA-Compatible' content='ie=edge'> <title>Document</title> <style> #box { width: 100px; height: 100px; background: red; position: absolute } </style></head> <body style='position: relative;overflow: hidden;'> <div id='box'> </div> <script> window.onload = function () { let box = document.getElementById(’box’) box.onmousedown = function (ev) { let e = ev || event; let x = e.clientX - box.offsetLeft; //鼠標點擊坐標距離盒子左邊緣的距離 let y = e.clientY - box.offsetTop; //鼠標點擊坐標距離盒子上邊緣的距離 document.onmousemove = function (ev) { let e = ev || event; box.style.left = ev.clientX - x + ’px’; box.style.top = ev.clientY - y + ’px’; let bodyScreenX = ev.screenX let bodyClientWidth = document.body.clientWidth document.onmouseup = function (ev) { if (ev.clientX - x < 0) { box.style.left = 0 } else if (bodyScreenX > bodyClientWidth) { box.style.right = 0 box.style.left = bodyClientWidth - 100 + ’px’ } document.onmousemove = null; document.onmouseup = null; } } } } </script></body> </html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 贵州省| 资溪县| 花莲县| 镇宁| 海阳市| 大石桥市| 来凤县| 泾阳县| 台东市| 静宁县| 丰都县| 张家界市| 梨树县| 绥芬河市| 江都市| 香格里拉县| 茌平县| 汤原县| 嘉祥县| 瓮安县| 称多县| 林西县| 恩平市| 清丰县| 江北区| 襄樊市| 东光县| 朝阳县| 申扎县| 项城市| 积石山| 卢氏县| 永登县| 禹州市| 威信县| 盘山县| 宁德市| 重庆市| 龙游县| 惠安县| 留坝县|