JavaScript如何實現九宮格拖拽效果

蝸牛 互聯網技術資訊 2022-07-02 37 0

這篇文章主要介紹“JavaScript如何實現九宮格拖拽效果”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“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>

效果圖

JavaScript如何實現九宮格拖拽效果  javascript 第1張

關于“JavaScript如何實現九宮格拖拽效果”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注蝸牛博客行業資訊頻道,小編每天都會為大家更新不同的知識點。

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

評論

日本韩欧美一级A片在线观看