| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖
标题:div一直跳
只看楼主 加入收藏
小棉袄
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
div一直跳
<style>
#div1{width:100px;height:150px;background:red;position:absolute;right:0; bottom:0;}
</style>
<script>
window.onscroll=function ()
{
    var odiv=document.getElementById('div1');
    var scrollTop=document.documentElement.scrollTop||document.body.scrollTop
    startmove(document.documentElement.clientHeight-odiv.offsetHeight+scrollTop);
    //odiv.style.top=document.documentElement.clientHeight-odiv.offsetHeight+scrollTop+'px';
    var timer=null;
    function startmove(iTarget)
    {
        var odiv=document.getElementById('div1');
        clearInterval(timer);
        timer=setInterval(function (){
            var speed=(iTarget-odiv.offsetTop)/6;
            speed=speed>0?Math.ceil(speed):Math.floor(speed);
            if(odiv.offsetTop==iTarget)
            {
                clearInterval(timer);   
            }
            else
            {
                odiv.style.top=odiv.offsetTop+speed+'px'   
            }
        },30)   
    }
}

</script>
</head>

<body style="height:2000px;">
<div id="div1">

</div>
</body>
</html>
搜索更多相关主题的帖子: background function absolute position bottom 
2015-03-24 16:20
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:20 
你程序的逻辑本身就有问题
首先,startmove写在了onscroll事件里面,每次都要重新定义,不合乎逻辑,虽然这样写,不会有什么错误,但建议写在事件的外面。
其次,貌似onscroll每次调用,才会执行startmove函数里的setInterval,但是onscroll事件的调用是非常多的,每改变1个像素都有可能产生调用,这样就造成了之前的setInterval和之后的setInterval连续并交叉执行。
结论是,不抖才怪

告诉我你想实现什么效果,看你这段代码的水平,不太适合过深的方法解决这个问题

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2015-03-25 21:13
快速回复:div一直跳
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016397 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved