国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 18:47:18
字體:
供稿:網(wǎng)友

本文解決的問題:

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

2、document.documentElementdocument.body的區(qū)別。
document.documentElement.clientWidth指整個html文檔的寬度,document.body.clientWidth的寬度。這兩者是不一樣的。可以在console控制臺通過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)點相對于窗口的坐標(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">點擊</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;//阻止事件冒泡,即點擊事件不會傳遞到mask這一層,意味著不會觸發(fā)點擊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的寬度。這兩者是不一樣的。可以在console控制臺通過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í)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 专栏| 高雄县| 盐边县| 桓仁| 隆尧县| 瓮安县| 张家川| 海淀区| 大同市| 荣昌县| 民丰县| 乌苏市| 馆陶县| 玛纳斯县| 嘉荫县| 新乡县| 自治县| 永德县| 宜兰县| 客服| 宁乡县| 交口县| 革吉县| 虎林市| 万源市| 雷波县| 九台市| 五指山市| 靖远县| 安泽县| 泰州市| 吉水县| 南汇区| 乡宁县| 晋宁县| 伊春市| 鄂托克旗| 乌鲁木齐县| 永善县| 怀安县| 安泽县|