twitter引导程序在滚动后修复导航栏

时间:2013-06-12 10:53:29

标签: twitter-bootstrap

我有一个导航栏,在加载时从页面顶部开始大约200px。当我向下滚动时,我希望导航栏能够“粘贴”到页面的顶部,并在滚动浏览其余内容时可见。 我可以让导航栏从顶部保持200px的位置,它忽略了我向前拉的内容并将其全部拉到左侧。我需要确保导航栏保持可见,并且布局/样式在整个过程中都是相同的。

下面是我的jsfiddle,显示我遇到的问题

  <!-- Begin Logo / Search -->
  <header class="masthead">
      <div class="row">
        <div class="span6">
          <div class="logo pull-left">
              <h1><a href="/">name</a></h1>
          </div>
        </div>
        <div class="span6">
            <div class="pull-right hidden-phone">
                <form class="search" action="/search" id="site-search">
                    <input type="hidden" name="records" value="6">
                    <div class="input-append">
                        <input type="text" name="q" class="search_box" placeholder="Search" value="" autocomplete="off" />
                        <button class="btn" type="submit"><i class="icon-search"></i></button>
                    </div>
                </form>     
            </div>
        </div>
      </div>
  </header>         


  <!-- Begin Navbar -->
  <div>
    <div class="navbar navbar-static">
      <div class="navbar-inner" id="mastnav">
        <div class="container">
            <!-- .btn-navbar is used as the toggle for collapsed navbar content -->
                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </a>
            <div class="nav-collapse collapse">
                <ul class="nav"><li><a href="#">nav</a> </li></ul>
                <ul class="nav pull-right">
                    <li>
                        <a href="/cart"><i class="icon-shopping-cart"></i> <span id="cart-count">1</span></a>
                    </li>
                </ul>
            </div>      
        </div>
      </div>
    </div><!-- /.navbar -->
  </div>

JSFIDDLE

4 个答案:

答案 0 :(得分:11)

导航变为affix后,它不再遵循正常的导航栏CSS样式。你可以给外部DIV容器一个id,然后把它设置为`affix'元素。使用CSS确保它保持100%宽度。

#nav.affix {
    position: fixed;
    top: 0;
    width: 100%
}

Working Demo

相关:
Affix Bootstrap flickers after affix-bottom reached and scrolling back top

答案 1 :(得分:2)

以下是修改过的jsfiddle,可以完成你想要的任务:

更新:对不起!粘贴错误的jsfiddle!当我播下反对票时意识到了!我会再做一次,稍后更新

更新:这是:

http://jsfiddle.net/KUPbD/4/

作为额外注释,您可以使用data-spy="affix"data-offset-top=""在html中声明词缀,因此不需要额外的内联脚本

答案 2 :(得分:2)

<script type="text/javascript">
    $(document).ready(function(e) {

        $(window).scroll(function () {
            if ($(window).scrollTop() > $('.navbar').offset().top) {
                $('.navbar').addClass('navbar-fixed-top');
                $('.navbar').removeClass('navbar-static-top');                  
            } else {
                $('.navbar').removeClass('navbar-fixed-top');
                $('.navbar').addClass('navbar-static-top');     
            }
        });         

    });
</script>

答案 3 :(得分:-2)

您需要将附加条件附加到导航栏的外部容器,我已对其进行了一些更改...

这个Js没有变化,但是html结构: -

$('#mastnav').affix({
      offset: {
        top: 0
      }
   });  

演示: - http://jsfiddle.net/KUPbD/1/

相关问题