6-12 徽章
本节编程练习不计算学习进度,请电脑登录imooc.com操作

徽章

从某种意义上来说,徽章效果和前面介绍的标签效果是极其的相似。也是用来做一些提示信息使用。常出现的是一些系统发出的信息,比如你登录你的twitter后,如果你信息没有看,系统会告诉你有多少信息未读,如下图所示:

在Bootstrap框架中,把这种效果称作为徽章效果,使用“badge”样式来实现。

对应的文件版本:

  ☑   LESS版本:源文件badges.less

  ☑   Sass版本:源文件_badges.scss

  ☑   编译后版本:bootstrap.css文件第4328行~第4366行

使用方法:

使用方法,其实也没什么太多可说的,你可以像标签一样,使用span标签来制作,然后为他加入badge类:

<a href="#">Inbox <span class="badge">42</span></a>

运行效果见右侧结果窗口。

实现原理:

主要将其设置为椭圆形,并且加了一个背景色:

/*bootstrap.css文件第4328行~第4341行*/

.badge {
display: inline-block;
min-width: 10px;
padding: 3px 7px;
font-size: 12px;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
background-color: #999;
border-radius: 10px;
}

同样也使用:empty伪元素,当没有内容的时候隐藏:

.badge:empty {
display: none;
}

正如开头所说,可以将徽章与按钮或者导航之类配合使用:

<div class="navbar navbar-default" role="navigation">
 <div class="navbar-header">
        <a href="##" class="navbar-brand">慕课网</a>
 </div>
  <ul class="nav navbar-nav">
         <li class="active"><a href="##">网站首页</a></li>
         <li><a href="##">系列教程</a></li>
         <li><a href="##">名师介绍</a></li>
         <li><a href="##">成功案例<span class="badge">23</span></a></li>
         <li><a href="##">关于我们</a></li>
  </ul>
</div>

运行效果见右侧结果窗口。

按钮和胶囊形导航设置徽章:

另外,徽章在按钮元素button和胶囊形导航nav-pills也可以有类似的样式,只不过是颜色不同而以:

<ul class="nav nav-pills">
  <li class="active"><a href="#">Home <span class="badge">42</span></a></li>
   …
  <li><a href="#">Messages<span class="badge">3</span></a></li>
</ul>
<ul class="navnav-pills nav-stacked" style="max-width: 260px;">
<li class="active">
<a href="#">
  <span class="badge pull-right">42</span>
          Home
</a>
</li>
…
<li>
<a href="#">
    <span class="badge pull-right">3</span>
          Messages
</a>
</li>
</ul>
<button class="btnbtn-primary" type="button">
      Messages <span class="badge">4</span>
</button>

运行效果见右侧结果窗口。

样式代码请查看bootstrap.css文件第4345行~第4366行,这20多行代码已从原文中节取出来,放在右侧代码顶部“bootstrap.css”文件中,小伙伴们可以查看。

注意:不过和标签组件不一样的是:在徽章组件中没有提供多种颜色风格的效果,不过你也可以通过badges.less或者_badges.scss快速自定义。此处对不做过多阐述。

任务

我来试试:完成下面任务

编写代码实现“tab导航条徽章”,效果图如下:


备注:这一小节没有正确性验证,请查看结果窗口,从而判断输入代码是否正确。

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <title>徽章</title>
  6. <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  7. </head>
  8. <body>
  9. <!--代码-->
  10. <a href="#">Inbox <span class="badge">42</span></a>
  11. <!--navbar-default导航条勋章-->
  12. <div class="navbar navbar-default" role="navigation">
  13.  <div class="navbar-header">
  14.   <a href="##" class="navbar-brand">慕课网</a>
  15.  </div>
  16. <ul class="nav navbar-nav">
  17. <li class="active"><a href="##">网站首页</a></li>
  18. <li><a href="##">系列教程</a></li>
  19. <li><a href="##">名师介绍</a></li>
  20. <li><a href="##">成功案例<span class="badge">23</span></a></li>
  21. <li><a href="##">关于我们</a></li>
  22. </ul>
  23. </div>
  24. <!--nav-pills导航条勋章-->
  25. <ul class="nav nav-pills">
  26. <li class="active"><a href="#">Home <span class="badge">42</span></a></li>
  27. <li><a href="#">Profile</a></li>
  28. <li><a href="#">Messages <span class="badge">3</span></a></li>
  29. </ul>
  30. <br />
  31. <ul class="nav nav-pills nav-stacked" style="max-width: 260px;">
  32. <li class="active">
  33. <a href="#">
  34. <span class="badge pull-right">42</span>
  35. Home
  36. </a>
  37. </li>
  38. <li><a href="#">Profile</a></li>
  39. <li>
  40. <a href="#">
  41. <span class="badge pull-right">3</span>
  42. Messages
  43. </a>
  44. </li>
  45. </ul>
  46. <br />
  47. <!--按钮勋章-->
  48. <button class="btn btn-primary" type="button">
  49. Messages <span class="badge">4</span>
  50. </button>
  51. <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
  52. <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
  53.  
  54. </body>
  55. </html>
  1. .btn .badge {
  2. position: relative;
  3. top: -1px;
  4. }
  5. .btn-xs .badge {
  6. top: 0;
  7. padding: 1px 5px;
  8. }
  9. a.badge:hover,
  10. a.badge:focus {
  11. color: #fff;
  12. text-decoration: none;
  13. cursor: pointer;
  14. }
  15. a.list-group-item.active> .badge,
  16. .nav-pills > .active > a > .badge {
  17. color: #428bca;
  18. background-color: #fff;
  19. }
  20. .nav-pills > li > a > .badge {
  21. margin-left: 3px;
  22. }
下一节