4.4.1 组合式下拉菜单

组合式下拉菜单其实就是普通的下拉菜单,只不过将触发元素从a元素换成了button元素(其实也可以在a元素上应用.btn样式实现)。唯一不同的是外部容器的样式从.dropdown换成了.btn-group。

通过下拉菜单章节的内容可以知道,下拉菜单需要满足一个特殊的需求,那就是必须有position: relative;样式的定义(如.dropdown样式)。而通过源码可以看出,新的.btn-group正好也满足该需求,所以简单替换成.btn-group样式即可实现的需要的效果。

示例源码如下:

  1. <div class="btn-group">
  2. <button type="button" class="btn btn-success dropdown-toggle" data-toggle=
  3. "dropdown">
  4. Success <span class="caret"></span>
  5. </button>
  6. <ul class="dropdown-menu">
  7. <li><a href="#">Action</a></li>
  8. <li><a href="#">Another action</a></li>
  9. <li><a href="#">Something else here</a></li>
  10. <li class="divider"></li>
  11. <li><a href="#">Separated link</a></li>
  12. </ul>
  13. </div>

上述代码的运行效果如图4-19所示。

4.4.1 组合式下拉菜单 - 图1 图4-19 组合式下拉菜单运行效果

在上述示例中,button元素内的span元素上有一个.caret样式,是表示向下箭头。具体实现源码如下:

  1. // 源码2985行
  2. .caret { /*向下箭头*/
  3. display: inline-block;
  4. width: 0; height: 0;
  5. margin-left: 2px;
  6. vertical-align: middle;
  7. border-top: 4px solid;
  8. border-right: 4px solid transparent;
  9. border-left: 4px solid transparent;
  10. }

如果需要向上箭头,则需要改变一下border-bottom样式。源码如下:

  1. // 源码3100行
  2. .dropup .caret,
  3. .navbar-fixed-bottom .dropdown .caret {
  4. content: "";
  5. border-top: 0;
  6. border-bottom: 4px solid;
  7. }