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

标签 javascript jquery html css

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

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

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

最佳答案

你遇到的问题是,当你在移动设备上时(如果你在移动设备上打开它)然后最初你做 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/

关于javascript - 在移动设备上禁用粘性导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900473/

相关文章:

javascript - 在 firebase 中使用 websockets 的正确方法是什么?

javascript - 用于为 Android、WinMobile、iOS 开发应用程序的统一语言

javascript - Jquery 图像 slider 没有行为

html - 为什么当我在 anchor 标签中给出绝对链接时,访问的链接颜色没有改变?

javascript - 使用 XMLHttpRequest 提交表行中的字段

javascript - Ajax:使用onclick jQuery连续刷新div

javascript - HTML 表格到 Excel Javascript

javascript - JQuery 动画回调

javascript - 如何动态删除 div 并清除内存,以便我可以使用 jQuery 添加具有相同 ID 但不同内容的新 div?

javascript - 拖动时拖放更改图像