4.11 徽章
源码文件:badges.less
CSS文件:bootstrap.css 4332行之后
在开发交互式系统或者信息系统时,经常要显示一些最新收到的消息、需要有多少审批的消息等。Bootstrap的.badge样式提供了很好的效果,只需要在span或者label上应用该样式即可。示例如下:
- <a href="#">Inbox <span class="badge">42</span></a>
上述示例的运行效果如图4-61所示。
图4-61 徽章运行效果
如下源码主要是设置具有圆角的背景椭圆框。
- // 源码4332行
- .badge {
- display: inline-block;
- /* 此处省略部分设置 */
- vertical-align: baseline;
- background-color: #999; /* 背景色 */
- border-radius: 10px; /* 超大圆角 */
- }
另外,如果.badge样式应用的内部无内容时(例如:没有新消息),.badge样式会自动消失。示例和源码实现分别如下。
示例:
- <span class="badge"></span>
源码:
- // 源码4346行
- .badge:empty {
- display: none;
- }
注意
由于IE8和以下版本不支持empty选择器,所以在这些浏览器下没有上述效果。
另外,badge样式在按钮元素button或list-group-item和nav-pills也可以有类似的样式,只是颜色稍有不同。示例如下。
- <ul class="nav nav-pills nav-stacked">
- <li class="active">
- <a href="#">
- <span class="badge pull-right">42</span>
- Home
- </a>
- </li>
- ...
- </ul>
上述示例的运行效果如图4-62所示。
图4-62 徽章在按钮及下拉菜单中的运行效果
徽章样式badge的源码如下:
- // 源码4349行
- .btn .badge {
- position: relative; /*在.btn样式里的元素上应用badge时,设置为相对定位*/
- top: -1px;
- }
- a.badge:hover,
- a.badge:focus { /*在a链接上设置badge时,在hover和focus时的颜色设置*/
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
- }
- a.list-group-item.active > .badge,
- .nav-pills > .active > a > .badge {
- color: #428bca; /*将文本颜色和胶囊式按钮的背景色设为一致*/
- background-color: #ffffff; /*背景设为白色*/
- }
- .nav-pills > li > a > .badge {
- margin-left: 3px; /*设置左外边距*/
- }
.badge样式有个遗憾就是,它没有定义多风格颜色的设定。不过根据label样式的多颜色设置,我们可以很简单为.badge样式扩展类似的功能,使用方式也和label类似。扩展源码如下:
- .badge-danger { background-color: #d9534f;}
- .badge-success { background-color: #5cb85c;}
- .badge-warning { background-color: #f0ad4e;}
- .badge-info { background-color: #5bc0de;}
上述代码的运行效果如图4-63所示。
图4-63 扩展后的彩色徽章
类似的,我们也可以为特殊元素内的badge定义特殊的字体颜色(而保持背景色不变)。扩展源码如下:
- .badge-content-default { background-color: #fff; color: #a7a9aa;}
- .badge-content-danger { background-color: #fff; color: #d9534f;}
- .badge-content-success { background-color: #fff; color: #5cb85c;}
- .badge-content-warning { background-color: #fff; color: #f0ad4e;}
- .badge-content-info { background-color: #fff; color: #5bc0de;}
上述代码的运行效果如图4-64所示。
图4-64 扩展后的徽章在特殊字体时的颜色