Bootstrap 3导航栏折叠菜单强制图像向下,而navbar-fixed-top可能吗?

时间:2014-01-10 00:43:17

标签: twitter-bootstrap-3

我试图弄清楚如何使导航栏崩溃行为是一种特定的方式,并且不确定它是否可能。

我只是使用默认导航栏但是向导航中添加了固定顶级类,此导航栏的默认操作(没有navbar-fixed-top)是单击时折叠的菜单将强制下面的任何内容是菜单打开时向下移动。当我将navbar-fixed-top类添加到导航栏时,它不会将其下方的内容推下来,而是下拉的菜单会覆盖其下方的内容。

基本上,我希望将导航固定到顶部,但我希望折叠菜单将其下方的内容推送到其中。

<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
  <span class="sr-only">Toggle navigation</span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Brand</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
  <li class="active"><a href="#">Link</a></li>
  <li><a href="#">Link</a></li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
      <li class="divider"></li>
      <li><a href="#">Separated link</a></li>
      <li class="divider"></li>
      <li><a href="#">One more separated link</a></li>
    </ul>
  </li>
</ul>
<form class="navbar-form navbar-left" role="search">
  <div class="form-group">
    <input type="text" class="form-control" placeholder="Search">
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav navbar-right">
  <li><a href="#">Link</a></li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
      <li class="divider"></li>
      <li><a href="#">Separated link</a></li>
    </ul>
  </li>
</ul>

1 个答案:

答案 0 :(得分:3)

可能有一种更优雅的方式,但这里有一个小的JavaScript会在菜单打开时将padding-top添加到body,并在关闭时将其删除,从而产生错觉正在按navbar-collapse推送内容。

有点hackish,但它有效...

DEMO

var navHeight = $('.navbar-collapse').height();

$('.navbar-collapse').on('show.bs.collapse', function(){
  if($(this).height() != 0){
     navHeight = $(this).height();
  }
  $('body').animate({
    'padding-top': parseInt($("body").css("padding-top")) + navHeight
   }, 300);
});

$('.navbar-collapse').on('hide.bs.collapse', function(){
  navHeight = $(this).height();
  $('body').animate({
    'padding-top': parseInt($("body").css("padding-top")) - navHeight
   }, 300);
});