【问题标题】:disable static to fixed navbar script on mobile在移动设备上禁用静态到固定导航栏脚本
【发布时间】:2015-10-12 10:09:38
【问题描述】:

我一直在为我的网站制作导航栏/标题。当您滚动超过徽标 100 像素时,导航栏将变为固定并位于顶部。

这一切都很好,但是在较小的视口上我不希望它这样做,因为我隐藏了徽标,并且导航栏永久固定在顶部。

问题是当您向下滚动时,它仍然运行脚本并隐藏导航栏,然后重新出现。当以 768px 的最大宽度查看时,我尝试将 display: block 添加到 css 中,但效果不大。我将如何不在较小的视口上运行此脚本,还是有更好的解决方案?

Here's a jsfiddle, try it in mobile view and scroll down.

这是我正在使用的代码

$(window).scroll(function() {
    var nav = $('#custom-bootstrap-menu');
    var body = $('body');
    var top = 100;
    var logo = $('div#navlogo');
    if ($(window).scrollTop() >= top) {

        nav.addClass('navbar-fixed-top');
        body.addClass('padding-fifty');
        logo.css('display', 'block');

    } else {
        nav.removeClass('navbar-fixed-top');
        body.removeClass('padding-fifty');
        logo.css('display', 'none');

    }
});

谢谢大家!

【问题讨论】:

    标签: javascript jquery html css twitter-bootstrap


    【解决方案1】:

    编辑:更新了小提琴。这有帮助吗?

    这个想法是为您的移动视图克隆一个导航栏,并仅在小屏幕中显示它并隐藏另一个导航栏。

    https://jsfiddle.net/6gyc6aeq/

    JS

    $(window).scroll(function() {
    var nav = $('#custom-bootstrap-menu');
    var body = $('body');
    var top = 100;
    var logo = $('div#navlogo');
    if ($(window).scrollTop() >= top) {
    
        nav.addClass('navbar-fixed-top');
        body.addClass('padding-fifty');
    
    
    } else {
        nav.removeClass('navbar-fixed-top');
        body.removeClass('padding-fifty');
    
    
    }
    });
    
    $("#mobile-only").html($("#custom-bootstrap-menu").html());
    

    HTML

     <body>
    
    <div id="logo">
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <h1>CHEEZ-IT</h1>
            </div>
            <div class="col-md-6">
    
            </div>
        </div>
      </div>
    </div>    
    
    
    
    
    
    <!-- Static navbar -->
    <nav id="custom-bootstrap-menu" class="navbar navbar-default navbar-static-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <div id="navlogo">            
            <a class="navbar-brand" href="#">CHEEZ-IT!</a>
          </div>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li><a href="#">Home</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About Us <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Who are Cheez-it's</a></li>
                <li><a href="#">Credentials</a></li>
              </ul>
            </li>
            <li><a href="#contact">Our Services</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Industries <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Cheeze-it Solar</a></li>
                <li><a href="#">Cheeze-it Infrastructure</a></li>
                <li><a href="#">Cheeze-it Harvest</a></li>                
              </ul>
            </li>
    
            <li><a href="#contact">Partners</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
     <nav id="mobile-only" class="navbar navbar-default navbar-fixed-top">
    
     </nav>
    
    
    <div class="container">
    <div class="row">
        <div class="col-md-12">
    
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>            
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND</h2>
            <h2>CONTENT IS GRAND, MAN</h2>
    
    
        </div>
    </div>
    

    CSS

    #logo {
    height: 100px;
    }
    
    .padding-fifty {
      padding-top: 50px;
    }
    
    .navbar-static-top #navlogo {
      display: none;
     }
    
     #custom-bootstrap-menu{
       display :block;   
     }
      #mobile-only{
          display:none;  
      }
    
     #custom-bootstrap-menu.navbar-fixed-top #navlogo{
            display:block;
     }
    
    @media only screen and (max-width: 768px) {
    body{
     padding-top: 50px;
    
    }
    
     #logo {
     display: none;
    }
    
    #navlogo {
    display: block;
    }
     #custom-bootstrap-menu{
       display :none;   
     }
     #mobile-only{
          display:block;  
      }
    
    
    
    
    
     }
    

    【讨论】:

    • 我喜欢你在这里所做的,但是在移动设备上导航不再固定在顶部
    • 您还有其他想法吗?
    • 太棒了。很高兴我能帮上忙。
    • 我只注意到一个问题,响应式菜单似乎不再起作用了,我会破解它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2018-12-31
    相关资源
    最近更新 更多