如果没有页面滚动,只隐藏div?

时间:2014-03-11 16:33:47

标签: jquery css

嗨我有一个div在x秒后向上滚动我想要这样做如果页面已经滚动到不向上滚动这就是滚动代码

$(window).load(function () {
$('body,html').delay(6000) //wait
    $('body,html').animate(
    {        
        'scrollTop': $('#topslide').offset().top
    }, 800); //animate over 300ms
});

我之前使用此代码检查滚动的位置以显示或隐藏徽标

这是用于该

的代码
var pastWaypoint = false;
$(window).scroll(function(){
    if ($(window).scrollTop() > 920 && !pastWaypoint) {    
        $('#logo').show();
        $('#main-nav').css('top','0px');
        pastWaypoint = true;
    }
    else if ($(window).scrollTop() <= 920 && pastWaypoint)
    {
        $('#logo').hide();
        $('#main-nav').css('top','100px');
        pastWaypoint = false;
    }
});

我不确定如何将两者结合起来以获得理想的效果。

任何建议

感谢

2 个答案:

答案 0 :(得分:2)

演示:http://jsfiddle.net/JcX7u/

要检查页面是否未滚动,您将使用if (!$(window).scrollTop()),并等待它,您只需使用setTimeout。

$(function(){
    setTimeout(function(){ // wait 1000ms (time is defined after the func further down)
        if (!$(window).scrollTop()){ // has the page been scrolled?
            $('body,html').animate({        
                'scrollTop': $('#topslide').offset().top
            }, 800); //animate over 800ms
        }
    },1000);
});

我在示例中使用了1秒来节省等待6秒才能看到它正常工作

答案 1 :(得分:1)

jQuery的延迟无法取消排队事件(AFAIK)。改为使用setTimeout,然后将函数包装在if中。 setTimeout与延迟相同,但由于它包装了一个函数,你可以使用条件语句来进行滚动检查。

$(window).load(function () {
    setTimeout(function(){ // The first argument is the function...
        if ($(window).scrollTop() <= 920)
            {
                $('body,html').animate({        
                    'scrollTop': $('#topslide').offset().top
                }, 800);
            }
    },6000); // This second argument is the time to wait in milliseconds BEFORE the function is called.
});