为了账号安全,请及时绑定邮箱和手机立即绑定

求助 无法渐变 而且会闪怎么回事

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
 ul,li{
            list-style:none;
 }
        ul li{
            margin-right:20px;
 width:200px;
 height:200px;
 float:left;
 background: brown;
 opacity:0.3;
 }
    </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].alpha = 0.3;
 aLi[i].onmouseover = function(){
                    startMove(this,1);

 }
                aLi[i].onmouseout = function(){
                    startMove(this,0.3);
 }
            }
        }

        function startMove(obj,iTarget){
            clearInterval(obj.timer);

 obj.timer = setInterval(function(){
                var speed = 0;
 if(iTarget>obj.alpha){
                    speed = 0.1;
 }
                else {
                    speed = -0.1;
 }
                if(obj.alpha == iTarget){
                    clearInterval(obj.timer)
                }
                else{
                    obj.alpha += speed;
 obj.style.opacity = obj.alpha ;
 }

            },10)
        }
    </script>
</head>
<body>
<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
</body>
</html>


正在回答

1 回答

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
 ul,li{
            list-style:none;
 }
        ul li{
            margin-right:20px;
 width:200px;
 height:200px;
 float:left;
 background: brown;
 opacity:0.3;
 }
    </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].alpha = 0.3;
 aLi[i].onmouseover = function(){
                    startMove(this,1);
 
 }
                aLi[i].onmouseout = function(){
                    startMove(this,0.3);
 }
            }
        }
 
        function startMove(obj,iTarget){
            clearInterval(obj.timer);

 obj.timer = setInterval(function(){
           var speed = 0;      
 if(iTarget>obj.alpha){
                    speed = 0.1;
 }
                else {
                    speed = -0.1;
 }
                if(obj.alpha == iTarget){
                    clearInterval(obj.timer)
                }
                else{
            //alert(obj.alpha);
                   obj.alpha = Math.round((obj.alpha + speed)*10)/10;
 obj.style.opacity = obj.alpha ;

 }
 
            },50)
        }
    </script>
</head>
<body>
<ul>
    <li></li><li></li><li></li><li></li>
  
</ul>
</body>
</html>

 我把你的obj.alpha += speed;改成了obj.alpha = Math.round((obj.alpha + speed)*10)/10;
就可以了
具体为什么会出错是因为计算机成生小数的过程有可能有点偏差,你要拿3也许它给的是3.000000...004所以我们四舍五入一下就好了http://img1.sycdn.imooc.com//572f5b0e0001611609030258.jpg

1 回复 有任何疑惑可以回复我~
#1

serebi 提问者

多谢大神指点~
2016-05-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求助 无法渐变 而且会闪怎么回事

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信