js实现div移动

时间:2024-02-15 18:33:24

之后想做一个可以展示数据存储位置变化的示意图,前期先做简单的两列互换。

首先先把格子画出来,因为想做列的移动,所以一列是一个div。
HTML:

   <div class="box">
       <div id="box1">
           <div class="in" style="background: #FE4365">1</div>
           <div class="in" style="background: #FE4365">4</div>
           <div class="in" style="background: #FE4365">7</div>
           <div class="in" style="background: #FE4365">10</div>
           <div class="in" style="background: #FE4365">13</div>
       </div>

       <div id="box2">
           <div class="in" style="background: #FC9D9A">2</div>
           <div class="in" style="background: #FC9D9A">5</div>
           <div class="in" style="background: #FC9D9A">8</div>
           <div class="in" style="background: #FC9D9A">11</div>
           <div class="in" style="background: #FC9D9A">14</div>
       </div>

       <div id="box3">
           <div class="in" style="background: #F9CDAD">3</div>
           <div class="in" style="background: #F9CDAD">6</div>
           <div class="in" style="background: #F9CDAD">9</div>
           <div class="in" style="background: #F9CDAD">12</div>
           <div class="in" style="background: #F9CDAD">15</div>
       </div>
   </div>

注意前后左右的距离。
CSS:

.box{
    width: 350px;
    margin: 0 auto;
    position: relative;
}

#box1{
    float: left;
    width: 52px;
    margin: 0 auto;
    border: 1px solid black;
    position:absolute;
    left: 30px;
    top: 20px;
}

#box2{
    float: left;
    width: 52px;
    margin: 0 auto;
    border: 1px solid black;
    position:absolute;
    left: 82px;
    top: 20px;
}

#box3{
    float: left;
    width: 52px;
    margin: 0 auto;
    border: 1px solid black;
    position:absolute;
    left: 134px;
    top: 20px;
}

.in{
    width: 50px;
    height: 50px;
    float: left;
    border: 1px solid black;
}

如图
在这里插入图片描述
把第一列和第三列互换,区别只是一个向右移动一个向左移动,下面只放向左移动的js。
JavaScript:

var cycle = null;
function movetoleft(object,itarget){
     var obj=document.getElementById(object);
     clearInterval(cycle);
     cycle=setInterval(function(){
         var speed = 0;
         console.log(\'obj.offsetLeft :\'+obj.offsetLeft);
         if(obj.offsetLeft<itarget){
             speed = 4;
         }
         else{
             speed = -4;
         }

         console.log(\'speed :\'+speed);
         if(obj.offsetLeft <= itarget){
             clearInterval(cycle);
         }
         else{
             obj.style.left = obj.offsetLeft+speed+\'px\';
             console.log(\'obj.style.left :\'+ obj.style.left);
             console.log(\'obj.offsetLeft :\'+ obj.offsetLeft);
         }
     },50);
 }

js解析:

cycle = setInterval(code,interval);//每interval毫秒就执行一次code程序。
clearInterval(cycle);//停止执行
obj.style.left //可读可写 代码中就是通过给它赋值达到另div移动的效果
obj.offsetLeft //只可读 

最后,使用movetoleft(‘box3’,30)调用函数就可以实现移动了。

在这里插入图片描述