【问题标题】:JQuery floating div stop after scrolling down certain div向下滚动某些div后JQuery浮动div停止
【发布时间】:2012-10-07 17:31:51
【问题描述】:

请检查此链接

http://jsfiddle.net/sasindu555/xaYTt/

我想在向下滚动stop div 后停止浮动special_features div。怎么做。请帮我。谢谢。

【问题讨论】:

  • @Phil:你是什么意思?
  • 只是和你搞砸了',对不起。

标签: jquery html scroll overlay


【解决方案1】:

我已经修改了您上面的代码,使其运行顺畅并且不会浮在停止元素上。代码风格也得到了改进。

var menu = "#menu",
        stop = '#stop';
    $(function(){
        var $menu = $(menu),
            $stop = $(stop),
            baseOffset = $menu.offset().top,
            stopOffset = $stop.offset().top;
        $(window).scroll(function () {  
            var newOffset = baseOffset + $(document).scrollTop();
            if($menu.offset().top < stopOffset || newOffset < stopOffset)
            {
                if (newOffset > stopOffset){
                    newOffset = stopOffset;
                }
                $menu.animate({top:newOffset},{duration:300,queue:false});  
            }
        });  
    }); 

http://jsfiddle.net/xaYTt/372/

【讨论】:

    【解决方案2】:

    试试下面的代码 - 它按预期工作http://jsfiddle.net/sasindu555/xaYTt/

     var name = "#special_features";  
        var menuYloc = null;  
    
        $(document).ready(function(){  
            $(name).css("top", $("#start").offset().top - 10);
            menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")))  
            $(window).scroll(function () {  
                var offset = menuYloc+$(document).scrollTop();  
                if(offset > $("#stop").offset().top){
                    offset = $("#stop").offset().top - 10; 
                }
                else if(offset < $("#start").offset().top){
                    offset = $("#start").offset().top - 10; 
                }
     offset = offset+"px";           $(name).animate({top:offset},{duration:500,queue:false});  
            });  
        });  
    

    【讨论】:

    • 请你再帮我一次。 link 在这里,我想从星形 div 开始漂浮。你能做到吗?
    • 您的意思是要从此处开始位置开始红色条?
    • 我想从灰色条开始,从绿色停止。 [不改变css,top参数。]
    • 我已经完成了,请检查我编辑的答案,也请为我的答案投票。
    【解决方案3】:

    你可以在 jquery 中使用 offset().top 来做这样的事情。

    if($(name).offset().top < $(stop).offset().top || newOffset < $(stop).offset().top)
    {    
         $(name).animate({top:newOffset},{duration:200,queue:false});  
    }
    

    这是我的尝试(不准确)。

    http://jsfiddle.net/xaYTt/7/

    编辑:哇,SE 的人真快……

    【讨论】:

    • 这里一直是代表竞争。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多