为什么我的链式运动不起作用呢

来源:7-1 JS动画案例

慕圣3402802

2019-04-25 16:33

<script>
            window.onload = function(){
                var oMove = document.getElementById('myDiv');
                var oList = oMove.getElementsByTagName('a');
                for(var i=0; i<oList.length; i++){
                    oList[i].onmouseover = function(){
                        var _this = this.getElementsByTagName('i')[0];
                        startMode(_this,{top:-3,opacity:0},function(){
                            _this.style.opacity = 100;
                            startMode(_this,{top:3,opacity:100})
                        });
                        }
                    }
                }
                
        </script>


//框架

function startMode(obj,json,fn){
    clearInterval(obj.timer);
    
    obj.timer = setInterval(function(){
        var flag = true;
        for(var attr in json){
            var icur = 0;
            if(attr=='opacity'){
                icur = parseFloat(getStyle(obj,attr))*100;
            }else{
                icur = parseInt(getStyle(obj,attr));
            }
            
             var speed = (json[attr]-icur)/8;
             speed>0?Math.ceil(speed):Math.floor(speed);
            
            if(json[attr] != icur){
                flag = false;
            }
                if(attr == 'opacity'){
                    obj.style.opacity = (icur+speed)/100;
                    obj.style.filter = 'alpha(opacity'+(icur+speed)+')';
                }else{
                    obj.style[attr] = icur + speed+'px';
                }
            }
        
            if(flag){
                        clearInterval(obj.timer);
                        if(fn){
                            fn();
                        }
            }
        
    },30)
}


function getStyle(obj,attr){
    if(obj.currentStyle){
        return obj.currentStyle[attr];
    }else{
        return getComputedStyle(obj,false)[attr];
    }
}

写回答 关注

1回答

  • weibo_是徐斩仙_0
    2019-10-30 12:25:21

    speed>0?Math.ceil(speed):Math.floor(speed);不对

    speed=speed>0?Math.ceil(speed):Math.floor(speed);

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题