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

为什么我的代码不用Math.round()也可以

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>任意属性值</title>
    <style type="text/css">
        *{margin:0;padding:0;}
        body,div {margin:0;padding:0;}
        div {
            width:200px;
            height:200px;
            background:red;
            margin:10px;
            float:left;
            filter:alpha(opacity:30);
            opacity:0.3;
        }
    </style>
    <script type="text/javascript">
        window.onload=function(){
            var oDiv=document.getElementById('div1');
            oDiv.onmouseover=function(){
                startMove(this,'opacity',100);
            }
            oDiv.onmouseout=function(){
                startMove(this,'opacity',30);
            }
        }
        function getStyle(obj,attr){
            if(obj.currentStyle){
                return obj.currentStyle[attr];
            }
            else{
                return getComputedStyle(obj,false)[attr];
            }
        }
        function startMove(obj,attr,iTarget){
            clearInterval(obj.timer);
            obj.timer=setInterval(function(){
                var icur=0;
                if(attr=='opacity'){
                    icur=parseFloat(getStyle(obj,attr))*100;
                }
                else{
                    icur=parseInt(getStyle(obj,attr));
                }
                var speed=(iTarget-icur)/8;
                speed=speed>0?Math.ceil(speed):Math.floor(speed);
                if(icur==iTarget){
                    clearInterval(obj.timer);
                }
                else{
                    if(attr=='opacity'){//如果传的是透明度
                        obj.style.filter='alpha(opacity:'+(icur+speed)+')';//针对IE浏览器
                        obj.style.opacity=(icur+speed)/100;
                        //针对Firefox
                    }
                    else{
                        obj.style[attr]=icur+speed+'px';
                    }
                }
            },30);
        }
    </script>
</head>
<body>
    <div id="div1"></div>
</body>
</html>

正在回答

1 回答

会不会因为计算机处理这个问题是随机的,计算机是随机处理小数,计算机在进行算术计算时其精确度不如整数。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JS动画效果
  • 参与学习       113926    人
  • 解答问题       1443    个

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

进入课程

为什么我的代码不用Math.round()也可以

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