<style type="text/css">
div{
width: 100px;
height: 100px;
background: red;
margin-bottom: 20px;
opacity: 0.2;
filter: alpha(opacity = 20);
}
</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
</body>
<script type="text/javascript">
function changes(obj,target){
clearInterval(obj.timer);
//obj.timer 是给每个div都添加上这个timer定时器
obj.timer = setInterval(function(){
//目标值 减去 初始的透明度值 缓冲变化
speed = (target - obj.alpha) / 10;
//为speed取整 防止类似抖动现象
if(speed>0){
speed = Math.ceil(speed);
}else{
speed = Math.floor(speed);
}
//将透明度的初始值 加上 缓冲变化值 赋值到新的 透明度值
//因此 每30毫秒执行定时器 透明度值都会更新
obj.alpha = obj.alpha + speed;
//解决非IE上的兼容
obj.style.opacity = obj.alpha/100;
//解决IE上的兼容
obj.style.filter = 'alpha(opacity =' + obj.alpha + ')';
},30);
}
window.onload = function(){
var oDiv = document.getElementsByTagName('div');
//var alpha = 20;
for(var i = 0; i<oDiv.length; i++){
/*如果是上面注释那样 给一个初始的透明度值
* 那么是所有的盒子共用一个初始值
*/
//给每一个盒子都设置一个初始的 透明度值
//这样能是进去是alpha 变到目标值 100
//出去就能又100到20 这样缓冲变化
//如果是注释那样 声明 那出去时候 alpha 还会是20 不会是100
//所以效果会是瞬间变回来
oDiv[i].alpha=20;
oDiv[i].onmouseover = function(){
changes(this,100);
}
oDiv[i].onmouseout = function(){
changes(this,20);
}
}
}
</script>