javascript - 关于JS动画无限循环问题~~求大神帮忙看下
天蓬老师
天蓬老师 2017-04-10 16:43:29
[JavaScript讨论组]

想简单的实现一个JS动画无限循环~不过设置了定时器好像没用~~不知道咋整了~求大神帮忙看下~非常感谢~
<!DOCTYPE html>
<html>
<head>

<meta charset="utf-8">
<title></title>
<script src="jquery.js"></script>

</head>

<body>

<p style="width: 30px;height: 30px;
    background-color: pink;position: absolute;"></p>
<script>
  function donghua(){
                $("p").animate({
                top:150,
                left:1000
            },1000)};
            donghua();

//这里设置了定时器想使流星滑动效果无限循环!可就是不好使,没效果~跪求解决方法~~

            var timer=setInterval(donghua,1000);
</script>

</body>

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(7)
高洛峰

写了个sample,替换下jquery引用应该就可以看到效果,在donghua()的回调函数里把位置值重置。
animate()写多个值{top:"300px",left:"300px"}
css()写多个值{"top":"10px","left":"10px"}

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        p{width: 30px;height: 30px; background-color: pink;position: absolute;top:0;left:0;}
    </style>
    <script src="jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
    var timer=setInterval(donghua,1000);
    function donghua(){
        $("p").animate({top:"300px",left:"300px"},1000,function(){
            $("p").css({"top":0,"left":0});
        });
    }
    </script>
</head>
<body>
    <p></p>
</body>
</html>

PHP中文网
<script>
    function donghua(){
        $("p").animate({
            top:150,
            left:1000
        },1000)};
    donghua();
    var timer=setInterval(donghua,1000);
</script>

donghua();执行完后,p元素已经移动到指定位置了,那么下次执行动画就会从 top:150,left:1000的位置开始移动,你说是个什么效果呢~~~

天蓬老师

没加单位吧?

高洛峰
        function donghua(){
            var $p = $("p"),
                startTop = $p.css("top"),
                startLeft = $p.css("left");
            $p.animate({
                top:150,
                left:1000
            }, 1000, null, function(){
                $p.css({
                    "top" : startTop,
                    "left" : startLeft
                });
                donghua();
            });
        }
        donghua();

这样试试看?

伊谢尔伦

第一次动画后,你的元素没回去。

阿神

动画到达指定位置后,你没有设置元素回到指定位置,donghua方法中应该像下面这样在动画结束后让元素回到初始位置

function donghua(){
    $("p").animate({
        top:150,
        left:1000
    }, 1000, function(){
        $("p").css({
            "top" :初始top值,
            "left" : 初始left值,
        });
    });
}
PHP中文网

正好之前写过一个类似的动画,你可以参考着看看:效果 demo

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

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