【问题标题】:Force Navbar elements to stay in one line强制导航栏元素保持在一行
【发布时间】:2019-06-25 23:00:21
【问题描述】:

我不希望我的 Bootstrap Navbar 的元素在每个宽度上保持在一行。

我知道这个问题已经被问到several times 并且我尝试了各种解决方案,但没有一个适合我的情况。

这是我的代码:

#head-navbar {
  width: 100%;
  white-space: nowrap;
  display: inline-block;
  overflow: hidden;
}
.nav>li {
  display: inline-block;
  white-space: nowrap;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<nav class="navbar navbar-inverse navbar-fixed-top navbar-collapse" id="head-navbar">
  <ul class="nav navbar-nav">
    <li><a class="#" href="#">Home</a>
    </li>
    <li><a href="#">Page 1</a>
    </li>
    <li><a href="#">Page 2</a>
    </li>
  </ul>
  <ul class="nav navbar-nav pull-right">
    <li><a href="#">DE</a>
    </li>
    <li><a href="#">IT</a>
    </li>
  </ul>
</nav>

我希望我的导航栏在较小的屏幕上看起来像这样:


而不是这样:

【问题讨论】:

  • 您希望两个 ul 都显示为内联?因为你编辑的问题现在很好

标签: html css twitter-bootstrap


【解决方案1】:

只需将display: inline-block; 添加到您的li,它们就会内联显示。

.nav>li {
    display: inline-block;
}

此外,如果您想在同一行中显示两个 ul,您可以对 ul 元素执行相同的操作。这里您有一个 jsfiddle 用于两个 ul 内联。

同样在 Firefox 中,您将在 768px 处有一个断点,因此您应该删除 white-space:nowrap

#head-navbar {
  white-space: normal;
}

P.s : 我不知道它是否是 TYPO 但你应该使用 .pull-right 而不是 .navbar-right 来向右浮动元素

【讨论】:

  • 不幸的是,您的解决方案没有给我想要的结果。我刚刚编辑了我的问题以澄清我的问题。谢谢,刚刚改成.pull-right。
  • 我刚刚编辑了我的 js fiddle,它运行良好。我刚刚对其进行了测试,即使在 290px 宽度下它也能很好地工作,但就像我们知道手机的最小宽度是 320px
  • 我刚刚测试了两个小提琴,但我仍然没有得到结果,正如我的问题中所解释的那样。也许你忘了保存它?
  • 只是为了澄清一些你不能无限缩小窗口的事情,因为通常情况下,没有地方可以让 5 个单词停留在宽度为 100 像素的一行中。因此,在我发布的 jsfiddle 中,我可以缩小到 290 像素,并且有一个断点发生该问题,但您的目标设备不是 290 像素,而是 320 像素,因此在 320 像素中效果很好。
  • 这是一个 jsfiddle 用于极端和不存在的屏幕尺寸jsfiddle.net/dpjoe0Lt/6
【解决方案2】:

这是因为媒体查询,所以在较小的屏幕上它会改变样式。只需添加这些:

 .navbar-nav {
    float: right;
    margin: 0;
  }
  .navbar-nav > li {
    float: right;
  }

【讨论】:

  • 不幸的是,您的解决方案没有给我正确的结果。我刚刚编辑了我的问题以澄清我的问题。
【解决方案3】:

添加下面的 css,这应该适合你。

#head-navbar {
  width: 100%;
  white-space: nowrap;
  display: inline-block;
  overflow: hidden;
}
.nav>li {
  display: inline-block;
  width:initial;
  float:left;
  white-space: nowrap;
}
.nav { 
  display: inline-block;
}

@media screen and (max-width:768px)
{
  .nav.navbar-nav.pull-right { float:none !important; }
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<nav class="navbar navbar-inverse navbar-fixed-top navbar-collapse" id="head-navbar">
  <ul class="nav navbar-nav">
    <li><a class="#" href="#">Home</a>
    </li>
    <li><a href="#">Page 1</a>
    </li>
    <li><a href="#">Page 2</a>
    </li>
  </ul>
  
  <ul class="nav navbar-nav pull-right">
    <li><a href="#">DE</a>
    </li>
    <li><a href="#">IT</a>
    </li>
  </ul>
</nav>

【讨论】:

  • 不幸的是,您的解决方案没有给我正确的结果。我刚刚编辑了我的问题以澄清我的问题。
  • 现在pull-right Navbar 在断点宽度 768px 处向左滑动。
【解决方案4】:

.pull-right{
  float:right;
  }
#head-navbar {
  width: 100%;
  white-space: nowrap;
  display: inline-block;
  overflow: hidden;
}
.nav>li {
  display: inline-block;
  width:initial;
  float:left;
  white-space: nowrap;
}
.nav { 
  display: inline-block;
}

@media screen and (max-width:768px)
{
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<nav class="navbar navbar-inverse navbar-fixed-top navbar-collapse" id="head-navbar">
  <ul class="nav navbar-nav">
    <li><a class="#" href="#">Home</a>
    </li>
    <li><a href="#">Page 1</a>
    </li>
    <li><a href="#">Page 2</a>
    </li>
  </ul>
  
  <ul class="nav navbar-nav pull-right">
    <li><a href="#">DE</a>
    </li>
    <li><a href="#">IT</a>
    </li>
  </ul>
</nav>

【讨论】:

  • 不幸的是,您的解决方案没有给我正确的结果。我刚刚编辑了我的问题以澄清我的问题。
  • 好的..现在我正在编辑我的代码,检查一下,如果您需要更多修改告诉我,我会帮助你
猜你喜欢
  • 2015-08-02
  • 2017-12-08
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2022-10-01
  • 2013-10-03
  • 2013-04-11
相关资源
最近更新 更多