javascript實(shí)現(xiàn)拖拽碰撞檢測(cè)
本文實(shí)例為大家分享了javascript實(shí)現(xiàn)拖拽碰撞檢測(cè)的具體代碼,供大家參考,具體內(nèi)容如下
拖拽碰撞檢測(cè)碰撞改變顏色
css:
<style> .div1{width: 100px;height: 100px;background: pink;position: absolute;} .div2{ width: 150px;height: 150px;background: gray;position: absolute; top: 35%; left: 35%; } </style>
html:
<body> <div class="div1"></div> <div class="div2"></div> </body>
js:
<script> window.onload = function () { var oDiv = document.getElementsByTagName("div")[0]; var oDiv2 = document.getElementsByTagName("div")[1]; //1.按下 拖動(dòng) oDiv.onmousedown = function (ev) { var oEvent = window.event || ev; //5.計(jì)算需要往回移動(dòng)的距離 //鼠標(biāo)與盒子的左相對(duì)距離 var l = oEvent.clientX - oDiv.offsetLeft; //鼠標(biāo)與盒子的上相對(duì)距離 var t = oEvent.clientY - oDiv.offsetTop; document.onmousemove = function (ev) { var oEvent = window.event || ev; //oEvent.preventDefault(); //2.獲取鼠標(biāo)坐標(biāo)位置 var x = oEvent.clientX; var y = oEvent.clientY; //div的坐標(biāo)位置 var x1 = x - l; var y1 = y - t; //div2的真實(shí)寬度 var oDiv2Width = oDiv2.offsetWidth; //div2的X坐標(biāo) var oDiv2Left = oDiv2.offsetLeft; //第一個(gè)左邊的臨界值 var div1L = x1 + oDiv.offsetWidth; //第二個(gè)左邊的臨界值 var div1L2 = oDiv2Width + oDiv2Left; //左邊的兩個(gè)臨界值的判斷 //第一個(gè)上面的臨界值 var div1Top = y1 + oDiv.offsetHeight; //第二上面的臨界值 var div1Top2 = oDiv2.offsetTop + oDiv2.offsetHeight; if(div1L>=oDiv2Left && x1 <= div1L2 && div1Top>=oDiv2.offsetTop && y1 <=div1Top2){ oDiv2.style.backgroundColor = 'yellow'; }else{ oDiv2.style.backgroundColor = 'gray'; } //3.設(shè)置div的位置 oDiv.style.left = x1 + "px"; oDiv.style.top = y1 + "px"; //增加一個(gè)全局捕獲事件 //這個(gè)全局捕獲事件 是兼容低版本的ie瀏覽器的 if(oDiv.setCapture){ oDiv.setCapture(); } return false; //這個(gè)return false不在ie瀏覽器下生效 } } oDiv.onmouseup = function () { //4.取消掉移動(dòng)事件 //當(dāng)我們抬起鼠標(biāo)的時(shí)候 就應(yīng)該釋放全局捕獲事件 if(oDiv.releaseCapture){ oDiv.releaseCapture() } document.onmousemove = null; } } </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)倒計(jì)時(shí)效果(小于10補(bǔ)零)
本文主要介分享了js實(shí)現(xiàn)倒計(jì)時(shí)效果(小于10補(bǔ)零)的實(shí)例代碼,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03JavaScript 批量創(chuàng)建數(shù)組的方法
JavaScript有許多批量創(chuàng)建數(shù)組的方法,為了衡量它們的性能,我分別使用不同的方法創(chuàng)建一個(gè)長(zhǎng)度為100000的數(shù)組,且鍵和值相等,今天小編給大家分享基于js批量創(chuàng)建數(shù)組的方法,一起看看吧2017-03-03?js中toString()函數(shù)與valueOf()函數(shù)使用與區(qū)別
在等于運(yùn)算符中,如果比較的內(nèi)容包含對(duì)象類(lèi)型數(shù)據(jù),則會(huì)涉及隱式轉(zhuǎn)換,那么就會(huì)調(diào)用toString()函數(shù)和valueOf()函數(shù),本文主要介紹了?js中toString()函數(shù)與valueOf()函數(shù)使用與區(qū)別,感興趣的可以了解一下2022-04-04javascript 翻頁(yè)測(cè)試頁(yè)(動(dòng)態(tài)創(chuàng)建標(biāo)簽并自動(dòng)翻頁(yè))
javascript 翻頁(yè)測(cè)試頁(yè)(動(dòng)態(tài)創(chuàng)建標(biāo)簽并自動(dòng)翻頁(yè)),需要的朋友可以參考下。2009-12-12Javascript將數(shù)值轉(zhuǎn)換為金額格式(分隔千分位和自動(dòng)增加小數(shù)點(diǎn))
這篇文章主要介紹Javascript將數(shù)值轉(zhuǎn)換為金額格式的方法,通俗易懂,需要的朋友可以參考下。2016-06-06JavaScript棧和隊(duì)列相關(guān)操作與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JavaScript棧和隊(duì)列相關(guān)操作與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascript棧和隊(duì)列的概念、原理、定義、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-12-12一個(gè)收集圖片的bookmarlet(js 刷新頁(yè)面中的圖片)
這個(gè)代碼是用來(lái)在新的頁(yè)面內(nèi)顯示當(dāng)前頁(yè)面內(nèi)的所有圖片的。2010-05-05詳解Web使用webpack構(gòu)建前端項(xiàng)目
本篇文章主要介紹了詳解Web使用webpack構(gòu)建前端項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09