【问题标题】:jquery Navigation animation showjquery导航动画展示
【发布时间】:2013-09-25 19:13:01
【问题描述】:

我创建了一个 jquery 导航,它在向下滚动时隐藏并在向上滚动时显示。

我在执行以下操作时遇到问题;

1) 向下滚动 500 像素后隐藏。

2) 滑入滑出就像这个导航https://www.wunderlist.com/en/

3) 似乎还有一个小错误,使它并不总是在滚动备份时显示。

这是我的演示 http://jsfiddle.net/w2Xx7/

var scroll_pos = 0;
var scroll_time;

$(window).scroll(function() {
    clearTimeout(scroll_time);
    var current_scroll = $(window).scrollTop();

    if (current_scroll >= $('#site-header').outerHeight()) {
        if (current_scroll <= scroll_pos) {
            $('#site-header').removeClass('hidden');    
        }
        else {
            $('#site-header').addClass('hidden');  
        }
    }

    scroll_time = setTimeout(function() {
        scroll_pos = $(window).scrollTop();
    }, 100);
});

谢谢大家!

【问题讨论】:

  • 你的 setTimeout() 函数只执行一次,比其他 js 代码晚 100 毫秒。因此,如果您不在页面顶部,if (current_scroll &lt;= scroll_pos) 将始终为 false。
  • 感谢您的帮助。你能用 jsfiddle 演示你的意思吗?

标签: jquery animation navigation slide


【解决方案1】:

试试这个:

var scroll_pos = 0;

$(window).scroll(function() {

var current_scroll = $(window).scrollTop();

scroll_pos = $(window).scrollTop();

if (current_scroll >= $('#site-header').outerHeight()) {
    if (current_scroll <= scroll_pos) {
        $('#site-header').removeClass('hidden');    
    }
    else {
        $('#site-header').addClass('hidden');  
    }
}

});

【讨论】:

  • 嗨,谢谢,但这似乎不起作用?你能用jsfiddle来展示例子吗?
  • 这似乎不起作用? :s 我想创建像这样的精确效果导航wunderlist.com/en
【解决方案2】:
var scroll_pos = 0;
var scroll_time;

$(window).scroll(function() {
clearTimeout(scroll_time);
var current_scroll = $(window).scrollTop();

if (current_scroll >= $('#site-header').outerHeight()) {
    if (current_scroll <= scroll_pos) {
        $('#site-header').animate({top:'0'});    
    }
    else {
        $('#site-header').animate({top:-52});  
    }
}

scroll_time = setTimeout(function() {
    scroll_pos = $(window).scrollTop();
    }, 100);
});

或简单的工作版本:

$(window).scroll(function() {
    var position = $("#site-header").offset();

    if (position.top <= 200) {
       $('#site-header').animate({top:0}, 100);    
    } else {
       $('#site-header').animate({top:-52},100);  
    }
});

顶部滚动版本:

var prev_pos = $(window).scrollTop();

$(window).scroll(function() {
    var position = $("#site-header").offset();
    var current_pos = $(window).scrollTop();

    if (position.top >= 200 && current_pos > prev_pos) {
       $('#site-header').animate({top:-52}, 100);
    } else {
       $('#site-header').animate({top:0}, 100);    
    }
    prev_pos = current_pos;
});

【讨论】:

  • 嗨,非常感谢。是否可以在您向上滚动时立即显示导航???
  • 看看第三版。向上滚动后立即显示导航。 100是动画时间,所以你可以改变它...
猜你喜欢
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多