为什么我的不能进行链式运动

来源:5-1 JS链式动画

无敌忍者

2016-09-12 22:44

window.onload = function() {
                var Li = document.getElementById('li1');
                Li.onmouseover = function() {
                    startMove(Li, 'width', 400, function() {
                        startMove(Li, 'height', 200, function() {
                            startMove(Li, 'opacity', 100);
                        });
                    });
                }
                Li.onmouseout = function() {
                    startMove(Li, 'opacity', 30, function() {
                        startMove(Li, 'height', 100, function() {
                            startMove(Li, 'width', 200);
                        });
                    });
                }
            }



move.js


function startMove(obj, attr, target, fn) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
        //获取当前的值
        var icur = 0;
        if(attr == 'opacity') {
            icur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
        } else {
            icur = parseInt(getStyle(obj, attr));
        }
        //2算速度
        var speed = (target - icur) / 8;
        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
        //3检测停止
        if(icur == target) {
            clearInterval(obj.timer);
            if(fn) {
                fn();
            }
        } else {
            if(attr == 'opacity') {
                obj.style.filter = 'alpha(opacity:' + icur + speed+ ')'; //IE
                obj.style.opacity = (icur + speed) / 100;
            } else {
                obj.style[attr] = icur + speed + 'px';
            }
        }
    }, 30);
}

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


写回答 关注

3回答

  • Pokeman
    2016-09-27 17:03:47
    window.onload =function(){
    			var Li=document.getElementById('li1');
    			Li.onmouseover = function(){
    				startMove(Li,'width',400,function(){
    					startMove(Li,'height',200);
    				});
    			}


  • 慕粉1464062117
    2016-09-20 15:28:27

    有可能是浏览器的问题,你把代码复制到慕课网写代码的地方,测试一下,如果可以,那就是浏览器的问题了。

    因为我的代码也有问题,测试传入fn函数参数时,总是显示错误:参数后面少")"。拿到慕课网测试,又可以传入函数参数。至于具体神马问题,憋问我,目前我也不知道,望有学霸解答一下。

    慕粉1464...

    好吧,我发现我写错了,我把function写成fn了,sorry

    2016-09-20 15:50:44

    共 1 条回复 >

  • 慕斯2996396
    2016-09-13 14:02:16

    我把你的代码拷下来运行可以链式运动啊,你是不是HTML顺序没写对?要这样写http://img.mukewang.com/57d7963a000124b013660736.jpg

    先引move.js再window.onload

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题