【问题标题】:Display issue with affix nav in mobile view在移动视图中显示词缀导航问题
【发布时间】:2016-08-04 23:12:40
【问题描述】:

我刚刚完成了一个车库网站,它下面有一个带有导航的标题,滚动时导航固定在屏幕顶部。通常非常简单,并且在其他站点上执行此操作没有问题。然而,在这个特定的项目中,如果在手机上加载,10 次中有 9 次出现导航在滚动时向上跳跃的问题,短暂地留下一个白色条带,其中填充添加到页面以适应新的状态早早跳起来的nav。

该站点是http://telstargarage.com,无论我做什么,该站点都不允许我发布代码,因为它说它的格式不正确,即使我遵循了帮助,并且在预览中看起来一切都很美好,它不会发布,所以请随时 fork 网站。

【问题讨论】:

    标签: javascript jquery twitter-bootstrap mobile affix


    【解决方案1】:

    由于您没有发布任何代码,因此很难诊断。

    我猜你的问题在这里:

    $(document).ready(function () {
        var menu = $('.menu');
        // This is likely incorrect on document ready 
        var origOffsetY = menu.offset().top; 
    
        function scroll() {
            if ($(window).scrollTop() >= origOffsetY) {
                $('.menu').addClass('navbar-fixed-top');
                $('.scrolled').addClass('menu-padding');
            } else {
                $('.menu').removeClass('navbar-fixed-top');
                $('.scrolled').removeClass('menu-padding');
            }
        }
    
        ...
    
    }
    

    我建议以不同的方式解决这个问题。也许通过更改偏移量,您可以将其与菜单容器的偏移量进行比较。这解决了调整屏幕大小导致原始偏移计算也不正确的问题。像这样的

    <div class="menu-container">
        <div class="menu">
            // Your menu in here
        </div>
    </div>
    

    这样的JS:

    $(document).ready(function () {
    
        function scroll() {
            if ($(window).scrollTop() >= $('.menu-container').offset().top) {
                $('.menu').addClass('navbar-fixed-top');
                $('.scrolled').addClass('menu-padding');
            } else {
                $('.menu').removeClass('navbar-fixed-top');
                $('.scrolled').removeClass('menu-padding');
            }
        }
    
        ...
    
    }
    

    【讨论】:

    • 感谢您的快速回复,您似乎已经为我解决了这个问题。将来我将使用此代码,而不是我正在做的事情。再次感谢
    • @RAstan 如果这已经解决了问题,请将答案标记为正确。
    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多