之后想做一个可以展示数据存储位置变化的示意图,前期先做简单的两列互换。
首先先把格子画出来,因为想做列的移动,所以一列是一个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)调用函数就可以实现移动了。