4.8 面包屑导航

源码文件:breadcrumbs.less

CSS文件:bootstrap.css 4116行之后

面包屑(Breadcrumb)一般用于导航,表示当前页面所在的位置(或功能插件)。使用方式如下:

  1. <ul class="breadcrumb">
  2. <li><a href="#">Home</a></li>
  3. <li><a href="#">Library</a></li>
  4. <li class="active">Data</li>
  5. </ul>

上述示例的运行效果如图4-51所示。

4.8 面包屑导航 - 图1 图4-51 面包屑导航运行效果

2.x版本的设计思路如下:

❑设置面包屑的背景颜色和相关的圆角等。

❑循环显示多个li,每个li表示一个元素链接。

❑每个li后面要显示分隔符,可利用CSS里的after和content实现。

❑最后一个li后面不需要显示分隔符。

❑高亮当前li元素的内容。

旧版代码如下:

  1. .breadcrumb { /* 基础样式,背景、圆角、list-style */
  2. padding: 8px 15px;
  3. margin: 0 0 20px;
  4. list-style: none;
  5. background-color: #f5f5f5;
  6. border-radius: 4px;
  7. }
  8. .breadcrumb > li { /* li设置为内敛块模式 */
  9. display: inline-block;
  10. text-shadow: 0 1px 0 #fff;
  11. }
  12. .breadcrumb > li:after { /* 分隔符设置:每个li后面设置分隔符 */
  13. display: inline-block;
  14. padding: 0 5px;
  15. color: #ccc;
  16. content: "\00a0 /";
  17. }
  18. .breadcrumb > li:last-child:after { /* 最后一个li后面的分隔符不需要设置 */
  19. display: none;
  20. }
  21. .breadcrumb > .active { /* 设置当前项的颜色 */
  22. color: #999999;
  23. }

看起来是不是很不错?是的,很不错。但在3.x版本,作者改变了设计思想,其方式更为精妙。源码如下:

  1. // 源码4116行
  2. .breadcrumb { /* 基础样式,背景、圆角、list-style */
  3. padding: 8px 15px;
  4. margin-bottom: 20px;
  5. list-style: none;
  6. background-color: #f5f5f5;
  7. border-radius: 4px;
  8. }
  9. .breadcrumb > li {
  10. display: inline-block; /* 所有的li项都是内联块方式 */
  11. }
  12. .breadcrumb > li + li:before { /* 并列li项才起作用 */
  13. padding: 0 5px;
  14. color: #ccc;
  15. content: "/\00a0";
  16. }
  17. .breadcrumb > .active {
  18. color: #999; /* 设置当前项的颜色 */
  19. }

新版本代码在对分隔符进行设置的时候,使用了li + li: before语法,也就是说只有两个li在一起显示的时候,才在后面一个li的before的content上设置分隔符。由于所有的li都在一起,所以都可以认为是两两相连的,也就说除了第一个li以外,其他所有的li项都满足条件,在它的before的content上设置分隔符,正好符合我们的预期。

是不是很精妙?老版3段代码实现的功能,新版用2段就实现了,而且代码更少。看来Bootstrap的作者对CSS3的理解又进步了不少。

注意

面包屑内可以设置其他相关的小标记内容,比如标签、徽章标记等。