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

首頁 > 編程 > JavaScript > 正文

Javascript 拖拽的一些簡單的應用(逐行分析代碼,讓你輕松了拖拽的原理)

2019-11-20 13:19:43
字體:
來源:轉載
供稿:網友

今天我們來看看如何讓拖拽的物體不能拖出某個div之外和拖拽的吸附功能

上次講到我們的拖拽是不可拖出可視區范圍的,在這基礎上我們加個父級的div,不讓他拖出父級。原理和之前的一樣,簡單吧。

html代碼:

<div id="div2">      <div id="div1">      </div>    </div>

css代碼:

<style type="text/css">      #div1 {        width: 100px;        height: 100px;        background: red;        position: absolute;      }      #div2 {        width: 400px;        height: 300px;        background: #CCCCCC;        position: relative;      }    </style>

javascript代碼:

<script type="text/javascript">       // 拖拽空div 低版本的火狐有bug      window.onload = function() {        var oDiv = document.getElementById("div1");        var oDiv2 = document.getElementById("div2");        var disX = 0;        var disY = 0;        oDiv.onmousedown = function(ev) {          var oEvent = ev || event;          disX = oEvent.clientX - oDiv.offsetLeft;          disY = oEvent.clientY - oDiv.offsetTop;          document.onmousemove = function(ev) {            var oEvent = ev || event;            // 存儲div當前的位置            var oDivLeft = oEvent.clientX - disX;            var oDivTop = oEvent.clientY - disY;            if (oDivLeft < 0) {              oDivLeft = 0;            } else if (oDivLeft > oDiv2.offsetWidth - oDiv.offsetWidth) {              oDivLeft = oDiv2.offsetWidth - oDiv.offsetWidth;            }            if (oDivTop < 0) {              oDivTop = 0;            } else if (oDivTop > oDiv2.offsetHeight - oDiv.offsetHeight) {              oDivTop = oDiv2.offsetHeight - oDiv.offsetHeight;            }            oDiv.style.left = oDivLeft + 'px';            oDiv.style.top = oDivTop + 'px';          };          document.onmouseup = function() {            document.onmousemove = null;            document.onmouseup = null;          };          return false; // 阻止默認事件,解決火狐的bug        };      };    </script>

效果圖如下:

簡單吧。

接下來就是如何讓他自動吸附。

其實這個大家會經常用到,比如ps里面有個小窗拖著拖著到頁面邊上的時候,他就會自動吸附上去。

我們這個拖拽怎么才能有這樣的功能呢?

這其實之前將運動的時候提到過,就好比打車你不可能分毫不差的讓司機停在那里,他肯定是停在靠近目的地的地方。

那程序也是一樣的,差不多快到了就直接賦值即可。假設我拖拽的物體離左邊50px的時候,我就認為他到了左邊,那直接賦值為0,他就會自動吸附上去。

原理很簡單,看看代碼如何實現的吧。稍作修改即可

<script type="text/javascript">      window.onload = function() {        var oDiv = document.getElementById("div1");        var oDiv2 = document.getElementById("div2");        var disX = 0;        var disY = 0;        oDiv.onmousedown = function(ev) {          var oEvent = ev || event;          disX = oEvent.clientX - oDiv.offsetLeft;          disY = oEvent.clientY - oDiv.offsetTop;          document.onmousemove = function(ev) {            var oEvent = ev || event;            var oDivLeft = oEvent.clientX - disX;            var oDivTop = oEvent.clientY - disY;            // 當left 小于50 就自動歸0 這樣實現吸附            if (oDivLeft < 50) {              oDivLeft = 0;            } else if (oDivLeft > oDiv2.offsetWidth - oDiv.offsetWidth) {              oDivLeft = oDiv2.offsetWidth - oDiv.offsetWidth;            }            if (oDivTop < 0) {              oDivTop = 0;            } else if (oDivTop > oDiv2.offsetHeight - oDiv.offsetHeight) {              oDivTop = oDiv2.offsetHeight - oDiv.offsetHeight;            }            oDiv.style.left = oDivLeft + 'px';            oDiv.style.top = oDivTop + 'px';          };          document.onmouseup = function() {            document.onmousemove = null;            document.onmouseup = null;          };          return false;         };      };    </script>

下一次會講到高級應用,這些會更加的負責更加的有用。已完善我們的拖拽功能。

比如說圖片的拖拽和文字的選中。比如說我們現在的這個拖拽頁面上就只有一個div,在平時開發中是不會遇到的。

其實在頁面上有東西的情況下,這個拖拽會出現什么問題???

下次會解決 ~ 盡請期待

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华阴市| 河曲县| 宝清县| 崇州市| 政和县| 白山市| 清流县| 眉山市| 浪卡子县| 连山| 榆树市| 萍乡市| 洞头县| 酉阳| 曲麻莱县| 湘乡市| 乌拉特后旗| 铜鼓县| 聂拉木县| 灵丘县| 莆田市| 宜兰市| 溧阳市| 隆昌县| 池州市| 洪江市| 宜宾市| 梅州市| 东兴市| 东兰县| 晋江市| 岚皋县| 新闻| 门源| 太仓市| 封丘县| 昌吉市| 四子王旗| 洞口县| 新龙县| 东安县|