【问题标题】:Sticky navigation only if bigger than 960px仅当大于 960 像素时才显示粘性导航
【发布时间】:2013-03-12 21:29:40
【问题描述】:

我有一个关于 jquery 的问题。仅当窗口大小大于 960 像素时,我才尝试应用粘性导航。所以我需要检查是否有窗口调整大小或滚动事件...我想不通...

有人可以帮我修一下吗?

这是我尝试修改的代码

$(function() {

    var sticky_navigation_offset_top = $('#nav').offset().top;

    var sticky_navigation = function(){
        var scroll_top = $(window).scrollTop(); // our current vertical position from the top

        if (scroll_top > sticky_navigation_offset_top) { 
            $('#nav').css({ 'position': 'fixed', 'top':0, 'left':0 });


        } else {
            $('#nav').css({ 'position': 'relative' }); 
        }   
    };

    sticky_navigation();

    $(window).resize(function() {
  if ($(window).width() > 960) {
        $(window).scroll(function() {
         sticky_navigation();
    });
  }
});
});

【问题讨论】:

  • 在处理程序中包含处理程序对我来说似乎很奇怪。如果需要,您可以将它们串在一起。

标签: jquery navigation sticky


【解决方案1】:

roXon 没有考虑导航偏移,并且还必须在调整大小和滚动时进行计算。

这是我的解决方案:http://jsfiddle.net/victmo/SZV6m/

我正在使用 jquery 的 1.8 on 函数:win.on('resize scroll', function(){...

Javascript

var minWidthToStick = 300;

var nav = $('#nav'); // caching nav
var offset = nav.offset().top; // getting offset
var win = $(window); // caching window

win.on('resize scroll', function(){
    if(
        win.width() >= minWidthToStick && 
        win.scrollTop() >= offset
    ){
        nav.css('position', 'fixed');
    }else{
        nav.css('position', 'relative');
    }
}).resize();

不要忘记将该代码放入您的 $(document).ready(function(){ ... }) 函数中 :)

【讨论】:

  • 很高兴听到 Jhon,干杯!
  • 是的,是这样的 $(document).ready(function(){ var minWidthToStick = 960; var nav = $('#nav'); // 缓存导航 var offset = nav. offset().top; // 获取偏移量 var win = $(window); // 缓存窗口 win.on('resize scroll', function(){ console.log(win.scrollTop()); if( win. width() >= minWidthToStick && win.scrollTop() >= offset ){ nav.css('position', 'fixed'); }else{ nav.css('position', 'relative'); } }).调整大小();});完美运行!
【解决方案2】:

LIVE DEMO

function stickNav() { 
    var setPosition = $(window).width() > 960 ? 'fixed' : 'relative';
    $('#nav').css({position:setPosition, left:0, top:0});
}


$(function() {
    stickNav();  // Do it on DOM ready
});

$(window).resize(function() {
    stickNav();  // Do in on Resize
});

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator

【讨论】:

  • roXon 非常感谢!完美运行!有一件事,一开始我的导航不粘,需要处于相对位置!这就是为什么我在到达菜单时使用滚动功能,相对位置更改为 Fixed !我需要添加什么才能使用它?在这里查看结果projects.faver.be/faver2013/# 再次感谢!
  • @jhon 我的都不粘。我不知道你的意思。你能设置一个演示吗?
  • 我的例子?它不适用于调整大小!尝试调整窗口大小,菜单仍然粘滞。我需要的是只有当窗口大小大于 960px 并且我们使用滚动到达菜单时才有一个粘性菜单。你知道我的意思吗? :)
猜你喜欢
  • 2019-09-27
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
  • 2021-04-01
  • 1970-01-01
相关资源
最近更新 更多