javascript緩衝彈性方式設定元素的尺寸

antzone發表於2017-04-07

設定元素的尺寸當然是非常簡單,但是普通的方式稍顯粗暴不夠美觀,元素的尺寸瞬間完成。

而彈性方式則人性化很多,下面就是一段這樣的程式碼例項,需要的朋友可以做一下參考。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
*{
  margin:0; 
  padding:0;
}
body{
  margin:5px auto; 
  text-align:center; 
  background:#f0f0f0;
}
#box{
  position:absolute; 
  top:100px;
  left:20px; 
  width:100px; 
  height:60px;
  border:1px solid #808;
}
#st{
  cursor:pointer; 
  background:#ccf; 
  margin:5px;
}
</style>
<script type="text/javascript">
var sw=100;
var ew=580;
var p=10;
var t=20;
 
 
function done(){
  var cw = parseInt(getStyle(box,'width'));
  if(cw<ew){
    box.style.width = cw + Math.ceil((ew-cw)/p) + 'px';
    setTimeout('done()', t);
  } 
  else{
    box.style.width=ew+'px';
  }
}
 
function getStyle(elem,name){ 
  if(elem.style[name]){ 
    return elem.style[name]; 
  } 
  else if(elem.currentStyle){ 
    return elem.currentStyle[name]; 
  } 
  else if(document.defaultView && document.defaultView.getComputedStyle){
    name=name.replace(/([A-Z])/g,"-$1"); 
    name=name.toLowerCase(); 
    var s=document.defaultView.getComputedStyle(elem,""); 
    return s && s.getPropertyValue(name); 
  } 
  else {return null;} 
}
window.onload=function(){
  var st = document.getElementById('st');
  st.onclick=function(){done()}
}
</script>
</head>
<body>
<div id="box">
  <span id="st">檢視效果</span>
</div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).var sw=100,元素的最初寬度。

(2).var ew=580,元素的最大寬度。

(3).var p=10,用來計算元素尺寸每次增長尺寸的一個值。

(4).var t=20,規定定時器函式延遲執行的時間。

(5).function done(){},此方法是實現緩衝運動的核心。

(6).var cw = parseInt(getStyle(box,'width')),獲取元素的width屬性值。

(7).if(cw<ew){

  box.style.width = cw + Math.ceil((ew-cw)/p) + 'px';

  setTimeout('done()', t);

},如果當前的寬度小於最大寬度。

那麼繼續設定元素的寬度值,當然是逐步增加,但是由於ew-cw越來越小,那麼增長的速度就越慢。

最後通過定時器函式遞迴的不斷執行函式done。

(8).else{

  box.style.width=ew+'px';

},否則的話設定元素的寬度等於最大寬度。

(9).getStyle()的用法可以參閱相關閱讀。

二.相關閱讀:

(1).parseInt()方法可以參閱javascript parseInt()一章節。

(2).Math.ceil()方法可以參閱javascript Math.ceil()一章節。

(3).setTimeout()方法可以參閱setTimeout()一章節。

(4).getStyle()方法可以參閱getComputedStyle()和currentStyle屬性的用法一章節。

相關文章