【问题标题】:Icons on the right side of the bootstrap navbar引导导航栏右侧的图标
【发布时间】:2026-02-07 20:35:01
【问题描述】:

在对 twitter 的引导程序进行一些实验时,我正在尝试制作一个导航栏,左侧是品牌,旁边是折叠菜单,最后是右侧未展开的一组图标。

这是diddly'fiddle

还有问题的部分:

      <!-- Non-collapsing right-side icons -->
      <div class="navbar-header navbar-right pull-right">
        <ul class="nav pull-right">
          <li class="pull-right"><a href="#">
            <img style="max-width:32; vertical-align:middle;" src="img/icon1.png">
          </a></li>
          <li class="pull-right"><a href="#">
            <img style="max-width:32; vertical-align:middle;" src="img/icon2.png">
          </a></li>
        </ul>
      </div> <!--/.navbar-right -->

正如您在小提琴中看到的那样,当菜单折叠时,就可以了。但是当窗口大到足以让菜单展开时,图标会向左移动(在品牌和菜单之间)。

我还尝试将非折叠图标放在 navbar-header 之外:在这种情况下,展开的导航栏是可以的,但折叠的版本会出错(图标在不同的行)。

提前感谢您的帮助。

【问题讨论】:

    标签: jquery html css twitter-bootstrap


    【解决方案1】:

    您需要以不同的方式构建 html,使用打算在导航栏上使用的类(在导航栏中不使用向右拉和向左拉)并编写自定义 css。

    演示:http://jsbin.com/humoye/1/

    代码:http://jsbin.com/humoye/1/edit

    尽量不要使用内联样式,并确保使用正确的语法,尽可能使用字体而不是图形,因为视网膜设备上的光栅图像看起来会很模糊,除非你加载两倍大小并缩小它在 css 中(或其他几种方式)。

    CSS

    /* icon */ .custom-navbar .fa {font-size:25px}
    
    @media (max-width:767px) { 
        .custom-navbar .navbar-right {
            float: right;
            padding-right: 15px;
        }
        .custom-navbar .nav.navbar-nav.navbar-right li {
            float: right;
        }
        .custom-navbar .nav.navbar-nav.navbar-right li > a {
            padding:8px 5px;
        }
        .custom-navbar .navbar-toggle {
            float: left
        }
        .custom-navbar .navbar-header {
            float: left;
            width: auto!important;
        }
        .custom-navbar .navbar-collapse {
            clear: both;
            float: none;
        }
    }
    

    HTML

    <nav class="navbar navbar-inverse navbar-static-top custom-navbar" role="navigation">
         <div class="container">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#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>
            <div class="navbar-header">
               <a class="navbar-brand" rel="home" href="#" title="Help">
               Help ?
               </a>
            </div>
            <!-- Non-collapsing right-side icons -->
            <ul class="nav navbar-nav navbar-right">
               <li>
                 <a href="#" class="fa fa-cog"></a>
               </li>
               <li>
                 <a href="#" class="fa fa-home"></a>
               </li>
            </ul>
            <!-- the collapsing menu -->
            <div class="collapse navbar-collapse navbar-left"  id="navbar-collapse-1">
               <ul class="nav navbar-nav">
                  <li class="active"><a href="#">Home</a></li>
                  <li><a href="#">About</a></li>
                  <li><a href="#">Contact</a></li>
               </ul>
            </div>
            <!--/.nav-collapse -->
         </div>
         <!--/.container -->
      </nav>
    

    【讨论】:

    • 太完美了。谢谢克里斯蒂娜的回答和课程。还要感谢您提供的非常有用的 Awesome-font 字体。也就是说,我确实对这一点有疑问:加载带有 479 个图标的字体只是为了使用 4 或 5 会不会太重?我不应该改用一些 SVG 吗?
    • @Enauofas - Bootstrap 带有 Glyphicons,因此您可以查看是否可用。看看他们的文档。你也可以只剪掉所有的 CSS,除了那些字体。要做的事情是自定义 boostrap 以节省空间,那里有很多你可能不会使用的 CSS。转到他们网站上的定制器。
    • 你可以使用iconmoo来创建你自己的图标字体更少的图标:)
    • 示例代码有一个问题:导航栏折叠时图标在右侧倒序。
    【解决方案2】:

    据我了解,Menu div 应该在 Header div 内。

    另外,标题 div 也应该有 100% 的宽度到任何屏幕尺寸上的零售位置。

    【讨论】: