js實現的div元素尺寸彈性縮放效果程式碼例項

admin發表於2017-04-01

本章節分享一段程式碼例項,它實現了div元素寬度的尺寸彈性改變效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
#bt{
  text-align:center;
  border:1px #ccc solid;
  padding:5px 10px;
  margin:0px 200px 50px 200px;
}
#antzone{
  width:900px;
  height:200px;
  margin:0px 200px;
  background-color:#e8e8e8;
  border:1px #ccc solid;
}
</style>
<script type="text/javascript">
var a=900;//最大距離
var b;//定時器變數
var c=-1;//下次點選運動方向 -1負向運動 1正向運動
var d=2; //反彈常量 數值越大彈性越小 取值d>1
var e=-1; //當前運動方向
var f=a; //當前位置
var g=0; //已單向運動時間
var h; //彈性體
var i=15;//運動速度 數值越大,運動越慢
 
function Bounce(id){
  h=document.getElementById(id);
  //終止未完成的運動
  if(b)clearInterval(b);
  //重置時間
  g=0;
  c=-1*c; //下次點選運動方向改變
  b=setInterval('move()',i);
}
function move(){
  if(c==1){
    if(e==-1){
      if(f-(2*g-1)>0){
        f=f-(2*g-1);
        g++;
      }
          else{
        e=1;
        f=1;
        g++;
        g=parseInt(g/d);
        g=g%2==0?(g+1):g;
        if(g==3)clearInterval(b);
      }
    }
        else{
      if(g>0){
        g--;
        f=f+2*g-1;
      }
          else{
        e=-1;
        g=0;
      }
    }
    h.style.width=f.toString()+"px";
  }
  else{
    if(e==1){
      if(f+(2*g-1)<a){
        f=f+(2*g-1);
        g++;
      }
          else{
        e=-1;
        f=a;
        g++;
        g=parseInt(g/d);
        g=g%2==0?(g+1):g;
        if(g==1)clearInterval(b);
      }
    }
        else{
      if(g>0){
        g--;
        f=f-(2*g-1);
      }
          else{
        e=1;
        g=0;
      }
    }
    h.style.width=f.toString()+"px";
  }
}
window.onload=function(){
  var obt=document.getElementById("bt");
  obt.onclick=function(){
    Bounce('antzone');
  }
}
</script>
</head>
<body>
<input id="bt" type="button" value="檢視效果"/>
<div id="antzone"></div>
</body>
</html>

上面的程式碼實現了要求,實現的原理是很簡單的,基本都是一些數學運算。

相關文章