<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了JavaScript實現九宮格拖拽效果的具體程式碼,供大家參考,具體內容如下
關於一些拼圖遊戲什麼的,見人家效果做的不錯,參考下別人寫的程式碼,我也嘗試著做了個。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> body{ margin: 0; padding: 0; } #wrap{ position: relative; } #wrap div{ position: absolute; width: 100px; height: 100px; font-size: 50px; text-align: center; line-height: 100px; border-radius: 10px; } </style> </head> <body> <div id="wrap"></div> <script type="text/javascript"> //生成結構 var oWrap = document.getElementById("wrap"); var mt = ml = 10; for(var i = 0; i < 3; i++){ for(var j = 0; j < 3; j++){ var oDiv = document.createElement("div"); oWrap.appendChild(oDiv); oDiv.style.top = i*(oDiv.offsetHeight + mt) + "px"; oDiv.style.left = j*(oDiv.offsetWidth + ml) + "px"; oDiv.style.backgroundColor = "rgb("+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+")" } } var arr = "ABCDEFGHI"; var aItems = oWrap.children; var len = aItems.length; for(var i = 0; i < aItems.length; i++){ aItems[i].innerHTML = arr[i]; } //拖拽及交換位置 for(var i = 0; i < aItems.length; i++){ aItems[i].onmousedown = function(e){ var evt = e || event; var x = evt.offsetX; var y = evt.offsetY; /*var x = evt.clientX - this.offsetLeft - oWrap.offsetLeft; var y = evt.clientY - this.offsetTop - oWrap.offsetTop;*/ var _this = this; var cloneNode = this.cloneNode(); cloneNode.style.border = '1px dashed #cecece'; this.style.zIndex = 1; oWrap.replaceChild(cloneNode,this); oWrap.appendChild(this); document.onmousemove = function(e){ var evt = e || event; var _left = evt.clientX - x - oWrap.offsetLeft; var _top = evt.clientY - y - oWrap.offsetTop; _this.style.left = _left + "px"; _this.style.top = _top + "px"; return false; } document.onmouseup = function(){ //交換位置 var disArr = []; var newArr = []; console.log(aItems.length); for(var i = 0; i < len; i++){ var disX = _this.offsetLeft - aItems[i].offsetLeft; var disY = _this.offsetTop - aItems[i].offsetTop; var dis = Math.sqrt(Math.pow(disX,2)+Math.pow(disY,2)); disArr.push(dis); newArr.push(dis); } disArr.sort(function(a,b){ return a-b; }) var minIndex = newArr.indexOf(disArr[0]); _this.style.left = aItems[minIndex].style.left; _this.style.top = aItems[minIndex].style.top; aItems[minIndex].style.left = cloneNode.style.left; aItems[minIndex].style.top = cloneNode.style.top; oWrap.removeChild(cloneNode); document.onmousemove = null; document.onmouseup = null; } } } /*var arr = [45,32,11,90]; var minVal = Math.min.apply(null,arr); var minIndex = arr.indexOf(minVal); console.log(minVal,arr,minIndex);*/ </script> </body> </html>
這是效果圖
雖說實現了效果,但我寫的還是不太嚴謹,還有諸多bug,比如上邊做邊沒距離,實際寫的話還要加上這個距離,即使距離為0,還有就是我發現拖拽的時候,如果使用qq截圖的話,克隆的那個小方塊沒辦法消失,只得重新重新整理頁面,有沒有大佬解決下。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45