欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實(shí)現(xiàn)九宮格拖拽效果

 更新時(shí)間:2022年06月28日 16:06:33   作者:zy_.  
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)九宮格拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)九宮格拖拽效果的具體代碼,供大家參考,具體內(nèi)容如下

關(guān)于一些拼圖游戲什么的,見(jiàn)人家效果做的不錯(cuò),參考下別人寫(xiě)的代碼,我也嘗試著做了個(gè)。

<!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">
?? ??? ??? ?//生成結(jié)構(gòu)
?? ??? ??? ?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>

這是效果圖

雖說(shuō)實(shí)現(xiàn)了效果,但我寫(xiě)的還是不太嚴(yán)謹(jǐn),還有諸多bug,比如上邊做邊沒(méi)距離,實(shí)際寫(xiě)的話(huà)還要加上這個(gè)距離,即使距離為0,還有就是我發(fā)現(xiàn)拖拽的時(shí)候,如果使用qq截圖的話(huà),克隆的那個(gè)小方塊沒(méi)辦法消失,只得重新刷新頁(yè)面,有沒(méi)有大佬解決下。

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

相關(guān)文章

  • js實(shí)現(xiàn)帶緩沖效果的仿QQ面板折疊菜單代碼

    js實(shí)現(xiàn)帶緩沖效果的仿QQ面板折疊菜單代碼

    這篇文章主要介紹了js實(shí)現(xiàn)帶緩沖效果的仿QQ面板折疊菜單代碼,通過(guò)JavaScript定時(shí)函數(shù)遞歸調(diào)用實(shí)現(xiàn)折疊菜單的緩沖效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • 關(guān)于在Typescript中做錯(cuò)誤處理的方式詳解

    關(guān)于在Typescript中做錯(cuò)誤處理的方式詳解

    錯(cuò)誤處理是軟件工程重要的一部分,如果處理得當(dāng),它可以為你節(jié)省數(shù)小時(shí)的調(diào)試和故障排除時(shí)間,我發(fā)現(xiàn)了與錯(cuò)誤處理相關(guān)的三大疑難雜癥:TypeScript的錯(cuò)誤類(lèi)型,變量范圍和嵌套,讓我們逐一深入了解它們帶來(lái)的撓頭問(wèn)題,感興趣的朋友可以參考下
    2023-09-09
  • 詳解js獲取video任意時(shí)間的畫(huà)面截圖

    詳解js獲取video任意時(shí)間的畫(huà)面截圖

    這篇文章主要介紹了js獲取video任意時(shí)間的畫(huà)面截圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • bootstrap table復(fù)雜操作代碼

    bootstrap table復(fù)雜操作代碼

    這篇文章主要為大家詳細(xì)介紹了bootstrap table復(fù)雜操作代碼,生成外層表格,填充表格內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(二) ECMAScript中的原始類(lèi)型

    《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(二) ECMAScript中的原始類(lèi)型

    ECMAScript有5種原始類(lèi)型(primitive type),即Undefined、Null、Boolean、Number和String。ECMAScript提供了typeof來(lái)判斷值的類(lèi)型
    2012-02-02
  • 如何利用JS實(shí)現(xiàn)時(shí)間軸動(dòng)畫(huà)效果

    如何利用JS實(shí)現(xiàn)時(shí)間軸動(dòng)畫(huà)效果

    時(shí)間軸動(dòng)畫(huà)和幀式動(dòng)畫(huà)有很大不同,但相比之下時(shí)間軸方式來(lái)的更直觀(guān)和簡(jiǎn)便,下面這篇文章主要給大家介紹了關(guān)于如何利用JS實(shí)現(xiàn)時(shí)間軸動(dòng)畫(huà)效果的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • JavaScript中 this 指向問(wèn)題深度解析

    JavaScript中 this 指向問(wèn)題深度解析

    這篇文章主要介紹了JavaScript中 this 指向問(wèn)題深度解析,JavaScript 中的 this 指向問(wèn)題有很多文章在解釋?zhuān)匀挥泻芏嗳藛?wèn),本文給大家深度解析,需要的朋友可以參考下
    2017-02-02
  • 仿iPhone通訊錄制作小程序自定義選擇組件的實(shí)現(xiàn)

    仿iPhone通訊錄制作小程序自定義選擇組件的實(shí)現(xiàn)

    這篇文章主要介紹了仿iPhone通訊錄制作小程序自定義選擇組件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • js判斷是否為ie的方法小結(jié)

    js判斷是否為ie的方法小結(jié)

    這篇文章主要介紹了js判斷是否為ie的方法,有需要的朋友可以參考一下
    2014-01-01
  • 詳細(xì)聊一聊js防抖節(jié)流到底是什么

    詳細(xì)聊一聊js防抖節(jié)流到底是什么

    在項(xiàng)目開(kāi)發(fā)中我們常常會(huì)去監(jiān)聽(tīng)滾動(dòng)事件或者用戶(hù)輸入框驗(yàn)證事件,如果事件處理沒(méi)有頻率限制,當(dāng)用戶(hù)不斷觸發(fā)事件時(shí),就會(huì)加重瀏覽器的負(fù)擔(dān),影響用戶(hù)的體驗(yàn),造成不必要的損失,這篇文章主要給大家介紹了關(guān)于js防抖節(jié)流到底是什么的相關(guān)資料,需要的朋友可以參考下
    2022-04-04

最新評(píng)論