溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用原生js實(shí)現(xiàn)可拖拽效果

發(fā)布時(shí)間:2021-06-18 14:56:47 來(lái)源:億速云 閱讀:142 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要介紹如何使用原生js實(shí)現(xiàn)可拖拽效果,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

效果圖:

如何使用原生js實(shí)現(xiàn)可拖拽效果

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>可拖拽特效</title>
 <style type="text/css">
 *{margin: 0;padding: 0;}
 .header{width:100%;height:30px;background:#036663;line-height:30px;color:#fff;text-indent:30px;}
 #demo{width:400px;height:300px;border:solid 5px #eee;box-shadow:0 0 5px #666;position:absolute;top:40%;left:40%;}
 #innerht{height:25px;background:#036663;border-bottom:solid 1px #369;color:#fff;text-indent:10px;cursor:move;}
 #close{float:right;cursor:pointer;}
 </style>
</head>
<body>
<div class="header">注冊(cè)信息</div>
<div id="demo">
 <div id="innerht">注冊(cè)信息(可拖拽)<span id="close">【關(guān)閉】</span></div>
 <div class="write"></div>
</div>
</body>
<script type="text/javascript">
 (function(window){
 function $(id){
  return document.getElementById(id);
 };
 // 獲取對(duì)象
 var innerht = $("innerht"),demo = $("demo"),close = $("close");
 // 給innerht綁定鼠標(biāo)事件
 innerht.onmousedown = function(event){
  // 解決event兼容問(wèn)題
  var event = event || window.event; 
  // 獲取鼠標(biāo)在頁(yè)面上坐標(biāo)
  var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
  var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
  // 獲取鼠標(biāo)在innerht內(nèi)部的坐標(biāo)
  var innerX = pageX - demo.offsetLeft;
  var innerY = pageY - demo.offsetTop;
  // 給document綁定鼠標(biāo)移動(dòng)事件,防止鼠標(biāo)快速滑動(dòng)時(shí)滑出innerht
  document.onmousemove = function(event){
  var event = event || window.event;
  // 獲取鼠標(biāo)移動(dòng)時(shí)的坐標(biāo)
  var moveX = event.pageX || event.clientX + document.documentElement.scrollLeft;
  var moveY = event.pageY || event.clientY + document.documentElement.scrollTop;
  // 鼠標(biāo)移動(dòng)時(shí)demo的位置坐標(biāo)
  var demoX = moveX - innerX ;
  var demoY = moveY - innerY ;
  // 鼠標(biāo)移動(dòng)時(shí)demo的位置坐標(biāo)
  demo.style.left = demoX + "px";
  demo.style.top = demoY + "px";
  //清除選中文字
       window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
  }
 };
 // 鼠標(biāo)抬起清除拖拽效果
 document.onmouseup = function(){
  document.onmousemove = null ;
 };
   // 點(diǎn)擊關(guān)閉按鈕關(guān)閉跟隨框
   close.onclick = function(){
   this.parentNode.parentNode.style.display = "none";
   };
 })(window)
</script>
</html>

以上是“如何使用原生js實(shí)現(xiàn)可拖拽效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

js
AI