最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js拖拽功能實(shí)現(xiàn)代碼解析

 更新時間:2016年11月28日 15:32:39   作者:簡單成書  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拖拽功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文解決的問題:

1、怎樣在網(wǎng)頁中實(shí)現(xiàn)拖曳功能;

2、document.documentElementdocument.body的區(qū)別。
document.documentElement.clientWidth指整個html文檔的寬度,document.body.clientWidth的寬度。這兩者是不一樣的??梢栽赾onsole控制臺通過console.log(document.documentElement)和console.log(document.body)進(jìn)行測試。

3、getBoundingClientRect().leftoffsetLeft的區(qū)別。
getBoundingClientRect()用于獲取元素的left、top、right、bottom。offset獲取相對于父級的left和top。getBoundingClientRect()獲取相對于窗口的left、top、right、bottom。

4、e.clientX指的是鼠標(biāo)點(diǎn)相對于窗口的坐標(biāo)。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>彈窗</title>
 <style type="text/css">
  #mask {
   position: fixed;
   left:0;
   top:0;
   width:100%;
   height: 100%;
   background-color: hsla(250,100%,50%,0.6);
   display: none;
  }
  #popBox {
   position: absolute;
   background-color: #fff;
   width:200px;
   height: 200px;
   /*left:50%;
   top:50%;*/
   /*margin-top: -100px;
   margin-left: -100px;*/
  }
 </style>
</head>
<body>
 <button id="clickBtn">點(diǎn)擊</button>
 <div id="mask">
  <div id="popBox"></div>
 </div>
 <script type="text/javascript">
  var clickBtn = document.getElementById("clickBtn");
  var popBox = document.getElementById("popBox")
  var mask = document.getElementById("mask");
  clickBtn.onclick = function() {
   mask.style.display = "block";
   popBox.style.left = (document.documentElement.clientWidth - popBox.offsetWidth)/2 + "px";
   popBox.style.top = (document.documentElement.clientHeight - popBox.offsetHeight)/2 + "px";

  }
  popBox.onclick = function(e) {
   var e = e || window.event;//e指所有代碼的集合,通過它可以獲取事件的各種屬性。
   e.cancelBubble = true;//阻止事件冒泡,即點(diǎn)擊事件不會傳遞到mask這一層,意味著不會觸發(fā)點(diǎn)擊mask事件代碼。
  }
  mask.onclick = function() {
   mask.style.display = "none";
  }

  //拖拽 mousedown->mousemove->mouseup 
  popBox.onmousedown = function(e) {
   var e = e || window.event;
   var pos = popBox.getBoundingClientRect();//getBoundingClientRect()用于獲取元素的left、top、right、bottom。offset獲取相對于父級的left和top。getBoundingClientRect()獲取相對于窗口的left、top、right、bottom。
   var oX = e.clientX - pos.left;//clientX指相對于窗口的坐標(biāo)。
   var oY = e.clientY - pos.top;
   document.onmousemove = function(e) {
    var e = e || window.event;
    var oLeft = e.clientX - oX;
    var oTop = e.clientY - oY;
    popBox.style.left = oLeft + "px";
    popBox.style.top = oTop + "px";
    if (oLeft<0) {
     popBox.style.left = 0 + "px";
    };
    if (oLeft>document.documentElement.clientWidth - popBox.offsetWidth) {
     popBox.style.left = document.documentElement.clientWidth - popBox.offsetWidth + "px";//document.documentElement.clientWidth指整個html文檔的寬度,document.body.clientWidth的寬度。這兩者是不一樣的??梢栽赾onsole控制臺通過console.log(document.documentElement)和console.log(document.body)進(jìn)行測試。


    }
    if (oTop<0) {
     popBox.style.top = 0 + "px";
    };
    if (oTop > document.documentElement.clientHeight - popBox.offsetHeight) {
     popBox.style.top = document.documentElement.clientHeight - popBox.offsetHeight + "px";
    }

   }
   popBox.onmouseup = function() {
    document.onmousemove = null;
   }
  }
 </script>
</body>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

高淳县| 凌源市| 琼海市| 织金县| 弥渡县| 弥勒县| 会东县| 宿迁市| 微山县| 紫阳县| 新巴尔虎左旗| 彭泽县| 丰城市| 高青县| 合山市| 龙山县| 乐至县| 永善县| 双牌县| 宝应县| 绍兴市| 龙泉市| 高邑县| 辛集市| 会理县| 重庆市| 水城县| 沂水县| 额济纳旗| 凌海市| 乌苏市| 扎囊县| 襄城县| 苗栗县| 汨罗市| 房山区| 永善县| 手游| 师宗县| 新密市| 禹城市|