javascript - 在平板电脑/手机模式下,我的粘性/固定到顶部导航栏不再粘性

标签 javascript css twitter-bootstrap navbar fixed

使用 Bootstrap 制作了一个粘性/固定到顶部的导航栏。它具有响应性,因此当屏幕低于设定尺寸时,导航选项会变成汉堡菜单。我还添加了教程中的 JavaScript,以便它可以很好地滚动。

除了在平板电脑/手机模式下,当导航栏停止固定在顶部并变为静态时,它工作正常。参见 here对于差异/它应该是什么样的。我不确定我做错了什么。

我已经尝试了很多版本/教程,有时我会在两种情况下都觉得它很粘,但没有汉堡菜单扩展等。这是迄今为止我得到的最好的基本上。以下是 HTML:

<div class="header">
<div class="container">
    <nav class="navbar-default" role="navigation">
        <div class="navbar-header">
        <button type="button" id="nav-toggle" class="navbar-toggle" data-toggle="collapse" data-target="#main-nav">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        </button>
        <a href="#" class="navbar-brand scroll-top">Company</a>
        </div>
        <!--/.navbar-header-->
    <div id="main-nav" class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
            <li><a href="#" class="scroll-link" data-id="contact">Contact</a></li>
            <li><a href="#" class="scroll-link" data-id="about">About</a></li>
            <li><a href="#" class="scroll-link" data-id="testimonials">Testimonials</a></li>
        </ul>
    </div>
    <!--/#main-nav.navbar-collapse-->
</nav>
    <!--/.navbar-->
</div>
<!--/.container-->

和javascript:

  <script type="text/javascript">
 $(document).ready(function() {
// navigation click actions 
$('.scroll-link').on('click', function(event){
    event.preventDefault();
    var sectionID = $(this).attr("data-id");
    scrollToID('#' + sectionID, 750);
});
// scroll to top action
$('.scroll-top').on('click', function(event) {
    event.preventDefault();
    $('html, body').animate({scrollTop:0}, 'slow');         
});
// mobile nav toggle
$('#nav-toggle').on('click', function (event) {
    event.preventDefault();
    $('#main-nav').toggleClass("open");
});
});
 // scroll function
 function scrollToID(id, speed){
var offSet = 50;
var targetOffset = $(id).offset().top - offSet;
var mainNav = $('#main-nav');
$('html,body').animate({scrollTop:targetOffset}, speed);
if (mainNav.hasClass("open")) {
    mainNav.css("height", "1px").removeClass("in").addClass("collapse");
    mainNav.removeClass("open");
}
  }
if (typeof console === "undefined") {
console = {
    log: function() { }
};
}

抱歉,如果我解释得不好。我大约一个月前尝试过导航栏然后放弃了,所以希望我没有忘记任何东西。

最佳答案

'navbar-fixed-top' 类添加到导航标签即

 <nav class="navbar-default navbar-fixed-top" role="navigation">

它会很好地工作。

关于javascript - 在平板电脑/手机模式下,我的粘性/固定到顶部导航栏不再粘性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26667771/

相关文章:

html - 我可以创建这样的 HTML 设计吗?

css - Bootstrap - 为什么是 : Row remove margin-left & not Row-fluid

javascript - 写一个函数 "solves"一个方程

javascript - ng-repeat 中的 AngularJS 指令范围绑定(bind)问题

html - 如何在圆形 div 中创建基于背景颜色的边框?

html - Bootstrap容器间距

asp.net-mvc-3 - 在 MVC3 中扩展不显眼的 javascript 以向 div 客户端添加样式的最佳方法

twitter-bootstrap - 将 Bootstrap 4 与 Grails 一起使用

javascript - 为什么要阻止跨域 AJAX *如果*您无意将响应评估为脚本?

javascript - jQuery 包含从一个列表到另一个列表的不敏感数据搜索