【问题标题】:How can I have two Bootstrap navbars on the same page of different heights?如何在不同高度的同一页面上有两个 Bootstrap 导航栏?
【发布时间】:2013-11-12 22:26:22
【问题描述】:

在同一页面上使用带有两个导航栏的 Bootstrap 3.0。高度变量将调整两个 .navbar 块。我尝试添加另一个类来覆盖第一个导航栏的高度,但它不受影响。

Bootply example

HTML:

<!-- Site Tools and Search Navbar -->
<div class="navbar siteTools">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>
    <form class="navbar-form navbar-right" role="search">
      <div class="form-group">
        <input type="text" class="form-control input-sm" placeholder="Search">
      </div>
      <button type="submit" class="btn btn-default btn-sm">Submit</button>
    </form>
    <div class="collapse navbar-collapse">     
      <ul class="nav navbar-nav pull-right">
        <li><a href="#">Site Tool Link</a></li>
        <li><a href="#">Site Tool Link</a></li>
        <li><a href="#">Site Tool Link</a></li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</div>

<!-- Primary Navbar -->
<div class="navbar navbar-inverse">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Project name</a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav navbar-right">
        <li class="dropdown active">
          <a href="http://www.google.com/" class="dropdown-toggle" data-toggle="dropdown">Menu #1 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#">Link #1</a></li>
            <li><a href="#">Link #2</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu #2 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#">Link #1</a></li>
            <li><a href="#">Link #2</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu #3 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#">Link #1</a></li>
            <li><a href="#">Link #2</a></li>
          </ul>
        </li>        
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu #4 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#">Link #1</a></li>
            <li><a href="#">Link #2</a></li>
          </ul>
        </li>        
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu #5 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#">Link #1</a></li>
            <li><a href="#">Link #2</a></li>
          </ul>
        </li>        
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu #6 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#">Link #1</a></li>
            <li><a href="#">Link #2</a></li>
          </ul>
        </li>        
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</div>

CSS:

.navbar {
  border-radius: 0px;
}
.siteTools {
  margin-bottom: 0px;
  background-color:#cdcdcd;
  border:none;
}

【问题讨论】:

  • 这可能是因为包含的元素保持高度最小。尝试更改包含的元素高度(或填充/边距等)
  • 是的。如果您覆盖它们是最小高度样式,那么由于 &lt;a&gt; 上的填充,它会保持相同的高度
  • 我知道我一定错过了一些简单的事情!这不会影响导航栏中的链接标签,所以我猜我只需要添加覆盖类来调整它们?

标签: css twitter-bootstrap navbar


【解决方案1】:

我知道另一个答案已被标记为正确,但我认为指定高度不是解决此问题的正确方法。

即使您覆盖默认的最小高度并将其设置为 0,菜单仍然很高,这是因为导航栏中元素的填充和边距。通过显式设置height: 35px,您将在导航栏中以 35 像素切割内容。这看起来很糟糕,对于想要更大字体等的任何人来说都不是很好。

我认为您应该像这样调整导航栏中的元素:

.siteTools {
  min-height:0;
  margin-bottom: 0px;
  background-color:#cdcdcd;
  border:none;
}

.siteTools .nav > li > a {
  padding: 7px 10px;
  font-size: 12px;
}

.siteTools form[role="search"] {
  margin: 4px 0;
}

.siteTools form[role="search"] input {
  padding: 3px 5px;
  height: 25px;
}

.siteTools form[role="search"] button[type="submit"] {
  padding: 3px 5px;
  height: 25px;
}

Working demo here.

【讨论】:

  • 你当然是对的,你的答案也是正确的。但事情只是“为什么它没有改变”,这就是我的答案如此简单的原因。问题作者没有要求为他更正整个样式;)这是他的工作来更正他想要的;)
  • 我只是认为您的回答会鼓励 OP 将 height: 35px 放在他们的 CSS 中,这将解决一个问题,然后再创建另一个问题。
  • 两个很好的答案。谢谢! @scx 让我朝着正确的方向前进。无论哪种方式,我都在尝试找出两种解决方案。
【解决方案2】:

这应该对您有所帮助。 min-height 阻止将元素缩小到其值以下。

.navbar {
  border-radius: 0px;
}
div.siteTools.navbar {
  height:35px;
  min-height:35px;
  margin-bottom: 0px;
  background-color:#cdcdcd;
  border:none;
}

【讨论】:

  • 如果您明确设置高度,您将在 35 像素处切断菜单。最好调整 &lt;a&gt; 标签和搜索表单周围的填充。
  • 这只是一个展示如何改变其高度的例子,它不是他的项目最终样式;)
  • 没错,这是一个例子。我只是认为如果 OP 是初学者,那么建议在导航栏容器上声明高度会鼓励不良做法。
猜你喜欢
  • 2015-09-25
  • 2016-08-14
  • 2020-11-07
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2022-01-24
相关资源
最近更新 更多