1. 程式人生 > >用getStyle來設定滑動效果

用getStyle來設定滑動效果

之前初學的時候,都是用offset屬性來設定,發現如果在沒有邊框的樣式下,沒有出現問題,但是如果加入了邊框,就會出現與目標值不一樣的情況,查閱了資料後發現了這個getStyle方法,currentStyle是針對IE的,getComputedStyle是針對火狐的,我也不太瞭解這種封裝好的方法,不過效果不錯。

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
ul,li{list-style: none;}
ul li{
width: 200px;
height: 100px;
background: yellow;
margin-bottom: 20px;
border: 2px solid black;
}
</style>
<script type="text/javascript">
window.onload = function(){
var ali = document.getElementsByTagName('li');
for(var i = 0;i<ali.length;i++){
ali[i].timer = null;
ali[i].onmouseover = function(){
startmove(this,400);
}
ali[i].onmouseout = function(){
startmove(this,200);
}
}
}

function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
else{
return getComputedStyle(obj,false)[attr];
}
}
//var timer = null;
function startmove(obj,iTarget){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var speed = (iTarget - parseInt(getStyle(obj,'width')))/8;
speed = speed > 0?Math.ceil(speed):Math.floor(speed);
if(parseInt(getStyle(obj,'width')) == iTarget){
clearInterval(obj.timer);
}else{
obj.style.width = parseInt(getStyle(obj,'width')) + speed + 'px';
}
},30)
}
</script>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>