javascript 组合动画调用,如何理解?
PHP中文网
PHP中文网 2017-04-11 09:09:58
[JavaScript讨论组]
  1. 这段代码为什么先高度变化再宽度变化呢?是不是函数当成参数传进另一个函数就要后执行

  2. 如何优化这段代码?

自己传自己算递归么?

startMove(this,400,'height',function(){
            startMove(container,400,'width');//???
        });

<p id="container">

css

#container{
    border: 1px solid blue;
    width: 200px;
    height: 200px;
    background-color: red;
    opacity: 0.5;
}

js

window.onload=function(){
    var container = document.getElementById('container');
    container.onmouseover=function(){
        startMove(this,400,'height',function(){
            startMove(container,400,'width');//???
        });
    }
};
var timer=null;
function startMove(obj,target,attr,fn)
{
    clearInterval(timer);
    timer=setInterval(function(){
        var speed=(target - getStyle(obj,attr))/20;
        speed = speed>0?Math.ceil(speed):Math.floor(speed);
        if(getStyle(obj,attr) == target)
        {
            clearInterval(timer);
            if(fn)
            {
                fn();
            }
        }
        else
        {
            obj.style[attr]=getStyle(obj,attr) + speed + 'px';
        }
    },30)
}
function getStyle(obj,attr){
    if(obj.currentStyle)
    {
        return parseFloat(obj.currentStyle[attr]);
    }
    else
    {
        return parseFloat(getComputedStyle(obj,false)[attr]);
    }
}
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
大家讲道理

startMove(this,400,'height',function(){

        startMove(container,400,'width');//???
    });
    

这个算是回调。
jquery的animate({left:50},秒,回调1).animate({top:50},秒,回调2)两个animate同时触发
jquery的animate({left:50},秒,.animate({top:50},秒,回调2))第一个完了,执行第二个

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号