Bootstrap源码解读下拉菜单(4)

网友投稿 192 2023-06-23


Bootstrap源码解读下拉菜单(4)

源码解读Bootstrap下拉菜单

基本用法

在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件。因为Bootstrap的组件交互效果都是依赖于jquery库写的插件,所以在使用bootstrap.min.js之前一定要先加载jquery.min.js才会生效果。

使用方法如下:

1. 使用一个名为“dropdown”的容器包裹了整个下拉菜单元素:

2. 使用一个

3. 下拉菜单项使用一个ul列表,并且定义一个类名为“dropdown-menu”:

完整如下:

下拉菜单

实现原理

Bootstrap框架中的下拉菜单组件,其下拉菜单项默认是隐藏的,因为“dropdown-menu”默认样式设置了“display:none”。实现源码如下:

.dropdown-menu {

position: absolute;

top: 100%;

left: 0;

z-index: 1000;

display: none;

float: left;

min-width: 160px;

padding: 5px 0;

margin: 2px 0 0;

font-size: 14px;

text-align: left;

list-style: none;

background-color: #fff;

-webkit-background-clip: padding-box;

background-clip: padding-box;

border: 1px solid #ccc;

border: 1px solid rgba(0, 0, 0, .15);

border-radius: 4px;

-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);

box-shadow: 0 6px 12px rgba(0, 0, 0, .175);

}

当点击父菜单项时,下拉菜单将会被显示出来,再次点击时,下拉菜单将继续隐藏。实现原理非常简单,通过js,给父容器“div.dropdown”添加或移除类名“open”来控制下拉菜单显示或隐藏。也就是说,默认情况,“div.dropdown”没有类名“open”,当用户第一次点击时,“div.dropdown”会添加类名“open”;当用户再次点击时,“div.dropdown”容器中的类名“open”又会被移除。实现源码如下:

.open > .dropdown-menu {

display: block;

}

下拉分隔线

下拉菜单还提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的

例如:

实现源码如下:

.dropdown-menu .divider {

height: 1px;

margin: 9px 0;

overflow: hidden;

background-color: #e5e5e5;

}

菜单标题

组与组之间可以添加一个

例如:

实现源码:

.dropdown-header {

display: block;

padding: 3px 20px;

font-size: 12px;

line-height: 1.42857143;

color: #999;

}

对齐方式

下拉菜单默认是左对齐,如果你想让下拉菜单相对于父容器右对齐时,可以在“dropdown-menu”上添加一个“pull-right”或者“dropdown-menu-right”类名,

例如:

实现源码:

.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-lNWcmPLfWBeft {

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)。这两种状态使用方法只需要在对应的菜单项

实现源码如下:

.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基础教程 专题中,欢迎点击学习。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于bootstrap的选择框插件icheck
下一篇:基于vue的下拉刷新指令和滚动刷新指令
相关文章

 发表评论

暂时没有评论,来抢沙发吧~