为什么使用的时向上取整,得到的确实向下取整?

来源:4-1 JS多物体动画

angview

2016-11-12 23:10

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>多物体运动</title>
    <style>
 ul li{
            width: 100px;
 height: 50px;
 background-color: yellow;
 margin-bottom: 10px;
 list-style: none;
 }
    </style>
    <script>
 window.onload=function () {
            var oli=document.getElementsByTagName("li");
 for(var i=0;i<oli.length;i++){
                oli[i].timer=null;
 oli[i].onmouseover=function () {
                    startmove(this,120);
 };
 oli[i].onmouseout=function () {
                    startmove(this,100);
 }
            }
            function startmove(obj,itarget) {
                clearInterval(obj.timer);
 obj.timer=setInterval(function () {
                   // var speed=(itarget-obj.offsetWidth)/8;
 var speed=speed>0?Math.ceil((itarget-obj.offsetWidth)/8):Math.floor((itarget-obj.offsetWidth)/8);
 console.log((itarget-obj.offsetWidth)/8);
 console.log('speed:'+speed+'width:'+obj.offsetWidth);
 if(obj.offsetWidth==itarget){
                        clearInterval(obj.timer);
 }else{
                        obj.style.width=obj.offsetWidth+speed+"px";
 }
                },30)
            }
        }
    </script>
</head>
<body>
<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
</body>
</html>

在后台consol.log查看后 和 注释 掉的 speed得到的结果不一样,即如果用speed则正常,如果使用Math.ceil((itarget-obj.offsetWidth)/8)则得到的结果却是 向下取整,即第一个值为120-100=2.5  ceil后应该是3但是在后台看确实2?!费解,请大神答疑,十分感谢http://img.mukewang.com/582730f200015df106510433.jpg

写回答 关注

1回答

  • angview
    2016-11-13 08:14:00

    回头看了一下 是我粗心,抱歉各位,问题已解决

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题