在移动设备上禁用粘性导航

Posted

技术标签:

【中文标题】在移动设备上禁用粘性导航【英文标题】:Disable Sticky Nav when on Mobile 【发布时间】:2015-01-10 02:27:00 【问题描述】:

我想在移动设备上禁用我的粘性导航栏。请看看我的 JS Fiddle Visithttp://jsfiddle.net/iolo/0pjrvumm/1/

我将媒体查询设置为 400 像素。 在大于 400 像素的窗口上加载页面时,粘性导航栏效果很好,当我将其调整到小于 400 像素而不刷新浏览器时,移动导航栏也很有效。

当我在小于 400 像素的窗口中加载页面时,移动导航栏按计划工作。但是我遇到的问题是当我将窗口大小调整为超过 400 像素而不刷新浏览器时。当我开始滚动时,导航栏会跳到顶部,并且无法正常工作。

【问题讨论】:

【参考方案1】:

您遇到的问题是,当您使用移动设备时(如果您在移动设备中打开它),那么最初您会执行var stickyNavTop = $('#main-nav-wrapper-sticky').offset().top;

但是因为$('#main-nav-wrapper-sticky')display:none(由于您的媒体查询400px)然后stickyNavTop 设置为0 这导致了您的所有问题,因为您从不调整标题导航为什么不只需将其硬编码为var stickyNavTop = 108

或强制它显示:block ($('#sticky-nav-placeholder').css( 'display': 'block');) 然后调用var stickyNavTop = $('#main-nav-wrapper-sticky').offset().top; 然后确定是否低于 400px,如果是则重新隐藏它。

$(document).ready(function() 

    var stickyNavTop = 108; // Since you never change the height

    var stickyNav = function()
        var scrollTop = $(window).scrollTop();

        if (scrollTop > stickyNavTop)  
            $('#main-nav-wrapper-sticky').css('position','fixed');
            $('#main-nav-wrapper-sticky').css('top','0');
            $('#sticky-nav-placeholder').css( 'display': 'block');
        
        else 
            $('#main-nav-wrapper-sticky').css('position','relative');
            $('#sticky-nav-placeholder').css( 'display': 'none'); 
        
        ;

    stickyNav();

    $(window).scroll(function() 
        stickyNav();
    );
);

JSFiddle:http://jsfiddle.net/0pjrvumm/11/

【讨论】:

就这么简单!非常感谢您的帮助和清晰的解释。我最终硬编码了stickyNavTop,因为就像你说的那样,这永远不会改变。再次感谢您的帮助,Simply Graig。

以上是关于在移动设备上禁用粘性导航的主要内容,如果未能解决你的问题,请参考以下文章

移动设备和平板电脑上的粘性标题上的奇怪 flickr

首先引导手机?为啥悬停仍然适用于移动设备?如何禁用悬停?

在wordpress革命滑块上将导航箭头放在移动设备上

如何使用机车库禁用智能手机上的粘性元素?

在移动设备和平板设备上禁用悬停

尝试使用 CSS 粘页脚时无法在移动设备中滚动