如何在Bootstrap导航栏中添加自定义图标

9
在我的项目中,我从导航栏开始工作。我想知道是否可能在每个菜单栏旁边添加自己的图标?例如这些图标:https://www.dropbox.com/sh/0be3c7ub4245kd6/zNMrvFi6Wq 像这样:enter image description here 演示:DEMO 代码:
<!-- Fixed navbar -->
    <div class="navbar navbar-default navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <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="#">Project name</a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>

          </ul>

        </div><!--/.nav-collapse -->
      </div>
    </div>

    <div class="container">

      <!-- Main component for a primary marketing message or call to action -->
      <div class="jumbotron">
        <h1>Navbar example</h1>
        <p>This example is a quick exercise to illustrate how the default, static and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
        <p>To see the difference between static and fixed top navbars, just scroll.</p>
        <p>
          <a class="btn btn-lg btn-primary" href="../../components/#navbar" role="button">View navbar docs &raquo;</a>
        </p>
      </div>

    </div> <!-- /container -->

我只是想确认一下我的回复是否解答了你的问题(我需要更新 Dropbox 图片的 URL,以防它们之前没有显示出来)。 - Darren
4个回答

13
你可以使用Font Awesome或Bootstrap字形图标。只需在文本之前添加类似于以下内容的东西,即可使用glyphicon:
<span class="glyphicon glyphicon-search"></span>

或者对于 Font Awesome,可以使用这个

<span class="fa fa-search"></span>

或者你可以创建自己的图标并为它们创建CSS类。

您更新后的演示


我想使用自己的图标,这就是问题所在。 - user3270211

7
这是一种在不添加任何额外标记的情况下完成的方法,但您需要为每个锚链接添加唯一的类。
CSS:
.navbar-default .navbar-nav>.active>a:before,
.navbar-nav>li>a:before {
    background-repeat: no-repeat;
    background-position: 0 top;
    content: "";
    display: inline-block;
    height: 29px;
    margin-right: 10px;
    vertical-align: middle;
    width: 29px;
}

.navbar-default .navbar-nav>.active>a.home:before,
.navbar-nav>li>a.home:before { background-image: url('https://dl.dropboxusercontent.com/sh/0be3c7ub4245kd6/18Xnfucw14/home.png'); }

.navbar-default .navbar-nav>.active>a.about:before,
.navbar-nav>li>a.about:before {  background-image: url('https://dl.dropboxusercontent.com/sh/0be3c7ub4245kd6/DhXiON5YiL/kveld.png'); }

.navbar-default .navbar-nav>.active>a.contact:before,
.navbar-nav>li>a.contact:before {  background-image: url('https://dl.dropboxusercontent.com/sh/0be3c7ub4245kd6/_fidqgglaS/sol.png'); }

您可以在此处查看结果:http://jsfiddle.net/2WvpV/

您需要调整边距和填充。此外,这并不完美,因为您应该使用相对大小而不是像素。


3

好的,@TrevorOrr的回答是关于Bootstrap标准字形图标的,但请记得将<span>标签包裹在<a>标签内。示例:

<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav navbar-left">
      <li><a href="#">Envelope icon: <span class="glyphicon glyphicon-envelope"></span></a></li> 
    </ul>
  </div>
</nav>    

如果您没有在锚点内包含<span>,那么图标将不会显示。

1
我遇到了类似的问题,但是这里选择的解决方案并没有起作用。我不得不将两个答案结合起来才能使其正常工作,也就是在<a>标签中嵌套一个<span class="icone icone-custom pull-right">,并对其应用背景属性。没有使用:before

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