<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>任意值运动函数</title>
<style>
#div1{width: 200px; height: 200px; background: red; border: 1px solid black;}
#div2{width: 200px; height: 200px; background: yellow; border: 1px solid black; filter:alpha(opacity:30); opacity: 0.3;}
</style>
<script>
window.onload = function(){
function getStyle(obj,name) { //获取样式
if(obj.currentStyle)
{
return obj.currentStyle[name];
}
else
{
return getComputedStyle(obj,false)[name];
}
}
function startMove(obj,attr,iTarget)
{
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var cur = 0;//当前的值
if(attr == 'opacity')
{
//出问题的计算组合之一:0.07*100 = 7.000000001
//parseFloat取浮点数 Math.round();四舍五入,把小数的部分去掉。
//兼容低版本IE和火狐
cur = Math.round(parseFloat(getStyle(obj,attr))*100);
}
else
{
cur = parseInt(getStyle(obj,attr));//去掉单位
}
var speed = (iTarget - cur)/6;
speed = speed>0?Math.ceil(speed):Math.floor(speed);
if(cur == iTarget)
{
clearInterval(obj.timer);
}
else
{
if(attr == 'opacity')
{
obj.style.filter = 'alpha(opacity:'+ (cur+speed) +')';
obj.style.opacity = (cur+speed)/100;
document.getElementById('txt1').value = obj.style.opacity;
}
else
{
obj.style[attr] = cur + speed + 'px';
document.getElementById('txt2').value = cur;
}
}
},30);
}
var oDiv = document.getElementById('div1');
var oDiv2 = document.getElementById('div2');
oDiv.onmouseover = function()
{
startMove(this,'width',600);
}
oDiv.onmouseout = function()
{
startMove(this,'width',200);
}
oDiv2.onmouseover = function()
{
startMove(this,'opacity',100);
}
oDiv2.onmouseout = function()
{
startMove(this,'opacity',30);
}
}
</script>
</head>
<body>
<div id = "div1"></div>
<div id = "div2"></div>
<input id = "txt1" type = "text" value = '' />
<input id = "txt2" type = "text" value = '' />
</body>
</html>