首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在顶部隐藏导航

问在顶部隐藏导航
EN

Stack Overflow用户
提问于 2017-04-03 08:18:07
回答 4查看 1.2K关注 0票数 3

你好,当我没有滚动时,我如何隐藏我的导航,在滚动时如何显示它?

我在这个链接http://dev.thegabrielmethod.com/gabriel/上使用两个菜单

一个在白色bg上,另一个在蓝色bg上

当不滚动时,我想隐藏白色bg上的导航菜单项,然后在滚动时再次显示它们。

​

​

这就是我正在尝试的不起作用的东西。

代码语言:javascript
复制
<script type='text/javascript'>//<![CDATA[
$(document).ready(function() {
        var headerTop = $('#header').offset().top;
        var headerBottom = headerTop + 120; // Sub-menu should appear after this distance from top.
        $(window).scroll(function () {
            var scrollTop = $(window).scrollTop(); // Current vertical scroll position from the top
            if (scrollTop > headerBottom) { // Check to see if we have scrolled more than headerBottom
                if (($("#navigation-alongside").is(":visible") === false)) {
                    $('#navigation-alongside').fadeIn('slow');
                }
            } else {
                if ($("#navigation-alongside").is(":visible")) {
                    $('#navigation-alongside').hide();
                }
            }
        });
    });

</script>

请给我一个建议

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-03 08:48:14

我也注意到你的html了。发现了一些问题。首先,您已经为blue导航栏- margin-top: 100px;设置了不需要的页边距。

并执行以下代码。

打开该站点,在控制台中打开developer tool >,执行下面的代码,然后滚动页面,您将看到其正常工作。

您只需在页面加载时执行以下代码,它也将在第二行处理保证金问题。

代码语言:javascript
复制
jQuery('.banner.include-nav').fadeOut();
jQuery('.nav-bar-below.op-page-header.cf').css({'margin':'0px'});
var h = jQuery('.nav-bar-below.op-page-header.cf').height();
jQuery(window).scroll(function () { 
    if(jQuery(window).scrollTop() > h)
    {
        jQuery('.banner.include-nav').fadeIn();
    }
    else 
    {
        jQuery('.banner.include-nav').fadeOut();
    }
})

先于卷轴

​

​

时滚动

​

​

更新

根据你的评论,我理解你,在白色的一个,你只是想隐藏菜单,而不是标志本身。试试下面的代码。就像上面告诉你的那样。

代码语言:javascript
复制
jQuery('.banner.include-nav > .fixed-width.cf > .sixteen.columns').fadeOut();
//jQuery('.nav-bar-below.op-page-header.cf').css({'margin':'0px'});
var h = jQuery('.nav-bar-below.op-page-header.cf').height();
jQuery(window).scroll(function () { 
    if(jQuery(window).scrollTop() > h)
    {
        jQuery('.banner.include-nav > .fixed-width.cf > .sixteen.columns').fadeIn();
    }
    else 
    {
        jQuery('.banner.include-nav > .fixed-width.cf > .sixteen.columns').fadeOut();
    }
})
票数 1
EN

Stack Overflow用户

发布于 2017-04-03 08:47:08

​

代码语言:javascript
复制
$(document).ready(function() {
  $(window).scroll(function() {
    $(".menu").css({
      'display': 'none'
    });
    clearTimeout($.data(this, 'scrollTimer'));
    $.data(this, 'scrollTimer', setTimeout(function() {
      $(".menu").css({
        'display': 'block'
      });
    }, 100));
  });
});
代码语言:javascript
复制
.menu {
  position: fixed;
  display: block;
  width: 100%;
  height: 150px;
  margin: 0px !important;
  box-shadow: 0 2mm 10px #aaa;
  text-align: center;
}

body {
  padding: 0px !important;
  height: 200vh;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body>
  <div class="menu"><br/>
    <h1>Menu Box</h1>
  </div>

</body>

​

这里!它不会在滚动时显示菜单。当滚动完成时会再次显示。

如果我误解了你的问题,请告知。

票数 2
EN

Stack Overflow用户

发布于 2017-04-03 08:31:20

这样做的一种方法是:

代码语言:javascript
复制
window.onscroll = function(e) {
    topMenu = document.querySelector('.banner.include-nav');
    scrollTopAmount = document.body.scrollTop;

    if (scrollTopAmount != 0) {
        topMenu.style.display = 'none';
    }
    else
        topMeny.style.display = 'block';
}

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43179711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档