强制导航栏元素保持在同一行

3

我希望我的Bootstrap导航栏的元素在任何宽度下都能保持一行

我知道这个问题已经被问过很多次,我尝试了各种解决方案,但对于我的情况都没有奏效。

这是我的代码:

#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>

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

enter image description here
而不是像这样:

enter image description here


你想让两个ul都显示为行内元素吗?因为根据你编辑后的问题,现在看起来已经没问题了。 - Edison Biba
4个回答

8
只需在您的
  • 中添加display: inline-block;,它们就会显示为内联。
    .nav>li {
        display: inline-block;
    }
    

    此外,如果您想在同一行中显示两个ul,可以对ul元素执行相同的操作。这里有一个jsfiddle可用于两个ul内联显示。
    此外,在Firefox中,您将在768px处遇到断点,因此应删除white-space:nowrap
    #head-navbar {
      white-space: normal;
    }
    

    附注:我不知道这是否是打字错误,但您应该使用.pull-right而不是.navbar-right来将元素向右浮动。


  • 很遗憾,您的解决方案没有给我想要的结果。我刚刚编辑了我的问题以澄清我的问题。谢谢,我刚刚将它更改为.pull-right - matthiasunt
    我刚刚编辑了我的JS Fiddle,它完美地运行了。我刚刚测试了一下,即使在290像素的宽度下也很好用,但我们知道手机的最小宽度是320像素。 - Edison Biba
    我刚刚测试了两个fiddles,仍然没有得到结果,就像我在问题中解释的那样。也许你忘记保存了? - matthiasunt
    只是为了澄清一些事情,您不能无限缩小窗口,因为通常情况下,在宽度为100px的行中没有足够的空间容纳5个单词。因此,在我发布的jsfiddle中,我可以缩小到290px,这是问题发生的断点,但您的目标设备不是290px,而是320px,所以在320px下它运行得很好。 - Edison Biba
    这是一个针对非常规屏幕尺寸和不存在的屏幕尺寸的JSFiddle示例:https://jsfiddle.net/dpjoe0Lt/6/ - Edison Biba
    当然,我只是不希望在宽度为768px时出现错误。我发现你的fiddle在IE和Chrome上完美运行,但Firefox的断点是在768px处。 - matthiasunt

    0

    .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>


    很遗憾,您的解决方案没有给我正确的结果。我刚刚编辑了我的问题以澄清我的问题。 - matthiasunt
    好的,现在我已经编辑了我的代码,请检查一下,如果需要更多修改,请告诉我,我会帮助你。 - user6768630

    0

    添加以下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>


    很遗憾,您的解决方案没有给我正确的结果。我刚刚编辑了我的问题以澄清我的问题。 - matthiasunt
    现在,当屏幕宽度达到768像素的断点时,pull-right导航栏会向左滑动。 - matthiasunt

    0

    这是由于媒体查询,因此在较小的屏幕上会更改样式。只需添加以下内容:

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

    很抱歉,您的解决方案并没有给我正确的结果。我刚刚编辑了我的问题以澄清我的问题。 - matthiasunt

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接