JavaScript:运动模型之淡入淡出效果
div结构、样式,可以替换成其他标签
<body> <div id="div1"> <li>空间</li> <li>微信</li> <li>微博</li> <li>空间</li> <li>微信</li> <li>微博</li> </div> </body>淡入淡出事件
window.onload = function(){ var oDiv = document.getElementById('div1'); oDiv.onmouseover = function(){ startMove(100); }; oDiv.onmouseout = function(){ startMove(30); }; };淡入淡出事件函数
var timer = null; var alpha = 30; //aipha用来存放变化过程中的变量,最终将赋值给透明度opacity function startMove(target){ var oDiv = document.getElementById('div1'); var speed; if(alpha<target){ speed = 2; } else{ speed = -2; } clearInterval(timer); timer = setInterval(function(){ if (alpha == target) { clearInterval(timer); } else { alpha = alpha+speed; console.log(alpha); oDiv.style.opacity = alpha/100; } },30); }完整示例代码
<!DOCTYPE html> <html> <head> <title>淡入淡出</title> <style type="text/css"> *{margin: 0px;padding: 0px;} li{font-size: 22px;} #div1{ width: 100px; height: 200px; margin: 200px auto; background-color: red; color: white; opacity: 0.3; } </style> <script type="text/javascript"> window.onload = function(){ var oDiv = document.getElementById('div1'); oDiv.onmouseover = function(){ startMove(100); }; oDiv.onmouseout = function(){ startMove(30); }; }; //aipha用来存放变化过程中的变量,最终将赋值给透明度opacity var timer = null; var alpha = 30; function startMove(target){ var oDiv = document.getElementById('div1'); var speed; if(alpha<target){ speed = 2; } else{ speed = -2; } clearInterval(timer); timer = setInterval(function(){ if (alpha == target) { clearInterval(timer); } else { alpha = alpha+speed; console.log(alpha); oDiv.style.opacity = alpha/100; } },30); } </script> </head> <body> <div id="div1"> <li>空间</li> <li>微信</li> <li>微博</li> <li>空间</li> <li>微信</li> <li>微博</li> </div> </body> </html>效果
注意事项:opacity一般是用0.0~1.0的小数表示,但是这儿使用0~100的正整数表示,最终除以100,得到小数。因为chrome的内核在计算浮点数加减法时,使用的是高精度的小数,使得1.0 - 0.3=6.99999999999999999等精度问题发生,影响if判断。故而直接使用整数进行计算。


浙公网安备 33010602011771号