Bootstrap源码解读下拉菜单(4)
源码解读Bootstrap下拉菜单
基本用法
在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件。因为Bootstrap的组件交互效果都是依赖于jQuery库写的插件,所以在使用bootstrap.min.js之前一定要先加载jquery.min.js才会生效果。
使用方法如下:
1.使用一个名为“dropdown”的容器包裹了整个下拉菜单元素:<divclass="dropdown"></div>
2.使用一个<button>按钮做为父菜单,并且定义类名“dropdown-toggle”和自定义“data-toggle”属性,且值必须和最外容器类名一致:data-toggle=”dropdown”
3.下拉菜单项使用一个ul列表,并且定义一个类名为“dropdown-menu”:<ulclass="dropdown-menu">
完整如下:
<divclass="dropdown"> <buttonclass="btnbtn-defaultdropdown-toggle"type="button"id="dropdownMenu1"data-toggle="dropdown"> 下拉菜单 <spanclass="caret"></span> </button> <ulclass="dropdown-menu"role="menu"aria-labelledby="dropdownMenu1"> <lirole="presentation"><arole="menuitem"tabindex="-1"href="#">下拉菜单项</a></li> <lirole="presentation"class="divider"></li> <lirole="presentation"><arole="menuitem"tabindex="-1"href="#">下拉菜单项</a></li> </ul> </div>
实现原理
Bootstrap框架中的下拉菜单组件,其下拉菜单项默认是隐藏的,因为“dropdown-menu”默认样式设置了“display:none”。实现源码如下:
.dropdown-menu{
position:absolute;
top:100%;
left:0;
z-index:1000;
display:none;
float:left;
min-width:160px;
padding:5px0;
margin:2px00;
font-size:14px;
text-align:left;
list-style:none;
background-color:#fff;
-webkit-background-clip:padding-box;
background-clip:padding-box;
border:1pxsolid#ccc;
border:1pxsolidrgba(0,0,0,.15);
border-radius:4px;
-webkit-box-shadow:06px12pxrgba(0,0,0,.175);
box-shadow:06px12pxrgba(0,0,0,.175);
}
当点击父菜单项时,下拉菜单将会被显示出来,再次点击时,下拉菜单将继续隐藏。实现原理非常简单,通过js,给父容器“div.dropdown”添加或移除类名“open”来控制下拉菜单显示或隐藏。也就是说,默认情况,“div.dropdown”没有类名“open”,当用户第一次点击时,“div.dropdown”会添加类名“open”;当用户再次点击时,“div.dropdown”容器中的类名“open”又会被移除。实现源码如下:
.open>.dropdown-menu{
display:block;
}
下拉分隔线
下拉菜单还提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的<li>,并且给这个<li>添加类名“divider”来实现添加下拉分隔线的功能。
例如:<lirole="presentation"class="divider"></li>
实现源码如下:
.dropdown-menu.divider{
height:1px;
margin:9px0;
overflow:hidden;
background-color:#e5e5e5;
}
菜单标题
组与组之间可以添加一个<li>,并添加类名“dropdown-header”可以给每个组添加一个头部(标题)。
例如:<lirole="presentation"class="dropdown-header">第一部分菜单头部</li>
实现源码:
.dropdown-header{
display:block;
padding:3px20px;
font-size:12px;
line-height:1.42857143;
color:#999;
}
对齐方式
下拉菜单默认是左对齐,如果你想让下拉菜单相对于父容器右对齐时,可以在“dropdown-menu”上添加一个“pull-right”或者“dropdown-menu-right”类名,
例如:<ulclass="dropdown-menupull-right"role="menu"aria-labelledby="dropdownMenu1">
实现源码:
.dropdown-menu.pull-right{
right:0;
left:auto;
}
.dropdown-menu-right{
right:0;
left:auto;
}
不过这样的话,下拉列表会跑到页面的最右边去,我们显然不希望这样,所以一定要为.dropdown添加float:left的css样式:
.dropdown{
float:left;
}
另外,还有个类名“dropdown-menu-left”,其实就是下拉菜单与父容器左边对齐的默认效果,
实现源码:
.dropdown-menu-left{
right:auto;
left:0;
}
菜单项状态
下拉菜单项的默认的状态有悬浮状态(:hover)和焦点状态(:focus),实现源码如下:
.dropdown-menu>li>a:hover,
.dropdown-menu>li>a:focus{
color:#262626;
text-decoration:none;
background-color:#f5f5f5;
}
另外还有当前状态(.active)和禁用状态(.disabled)。这两种状态使用方法只需要在对应的菜单项<li>上添加对应的类名“active”或“disabled”。
实现源码如下:
.dropdown-menu>.active>a,
.dropdown-menu>.active>a:hover,
.dropdown-menu>.active>a:focus{
color:#fff;
text-decoration:none;
background-color:#428bca;
outline:0;
}
.dropdown-menu>.disabled>a,
.dropdown-menu>.disabled>a:hover,
.dropdown-menu>.disabled>a:focus{
color:#999;
}
.dropdown-menu>.disabled>a:hover,
.dropdown-menu>.disabled>a:focus{
text-decoration:none;
cursor:not-allowed;
background-color:transparent;
background-image:none;
filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);
}
本文系列教程整理到:Bootstrap基础教程专题中,欢迎点击学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。