源码解读Bootstrap下拉菜单

基本用法
在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件。因为Bootstrap的组件交互效果都是依赖于jQuery库写的插件,所以在使用bootstrap.min.js之前一定要先加载jquery.min.js才会生效果。
使用方法如下:
1. 使用一个名为“dropdown”的容器包裹了整个下拉菜单元素:<div class="dropdown"></div>
2. 使用一个<button>按钮做为父菜单,并且定义类名“dropdown-toggle”和自定义“data-toggle”属性,且值必须和最外容器类名一致:data-toggle=”dropdown”
3. 下拉菜单项使用一个ul列表,并且定义一个类名为“dropdown-menu”:<ul class="dropdown-menu">
完整如下:
<div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> 下拉菜单 <span class="caret"></span> </button> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1"> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li> <li role="presentation" class="divider"></li> <li role="presentation"><a role="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: 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;
}
下拉分隔线
下拉菜单还提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的<li>,并且给这个<li>添加类名“divider”来实现添加下拉分隔线的功能。
例如: <li role="presentation" class="divider"></li>
实现源码如下:
.dropdown-menu .divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
菜单标题
组与组之间可以添加一个<li>,并添加类名“dropdown-header”可以给每个组添加一个头部(标题)。
例如:<li role="presentation" class="dropdown-header">第一部分菜单头部</li>
实现源码:
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
color: #999;
}
对齐方式
下拉菜单默认是左对齐,如果你想让下拉菜单相对于父容器右对齐时,可以在“dropdown-menu”上添加一个“pull-right”或者“dropdown-menu-right”类名,
例如:<ul class="dropdown-menu pull-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基础教程 专题中,欢迎点击学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Bootstrap下拉菜单
# Bootstrap菜单
# Bootstrap每天必学之下拉菜单
# Bootstrap每天必学之级联下拉菜单
# Bootstrap 中下拉菜单修改成鼠标悬停直接显示
# Bootstrap实现下拉菜单效果
# 学习Bootstrap组件之下拉菜单
# Bootstrap+jfinal实现省市级联下拉菜单
# Bootstrap按钮下拉菜单组件详解
# Bootstrap下拉菜单效果实例代码分享
# Bootstrap CSS组件之按钮下拉菜单
# Bootstrap CSS组件之下拉菜单(dropdown)
# 菜单项
# 分隔线
# 移除
# 都是
# 如果你
# 有个
# 将会
# 才会
# 只需
# 要在
# 可以通过
# 跑到
# 自定义
# 又会
# 想让
# 相对于
# 这两种
# 来实现
# 第一部分
# 大家多多
相关文章:
兔展官网 在线制作,怎样制作微信请帖?
如何注册花生壳免费域名并搭建个人网站?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何在自有机房高效搭建专业网站?
建站之星价格显示格式升级,你的预算足够吗?
如何选择高性价比服务器搭建个人网站?
MySQL查询结果复制到新表的方法(更新、插入)
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何用y主机助手快速搭建网站?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何在七牛云存储上搭建网站并设置自定义域名?
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站之星安装失败:服务器环境不兼容?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
创业网站制作流程,创业网站可靠吗?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何在腾讯云服务器快速搭建个人网站?
网站专业制作公司有哪些,做一个公司网站要多少钱?
建站之星后台密码如何安全设置与找回?
如何规划企业建站流程的关键步骤?
历史网站制作软件,华为如何找回被删除的网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在云主机快速搭建网站站点?
建站之星logo尺寸如何设置最合适?
如何在橙子建站上传落地页?操作指南详解
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
建站之星备案是否影响网站上线时间?
建站之星代理商如何保障技术支持与售后服务?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
制作宣传网站的软件,小红书可以宣传网站吗?
建站之星各版本价格是多少?
测试制作网站有哪些,测试性取向的权威测试或者网站?
建站之星如何实现五合一智能建站与营销推广?
制作网站的模板软件,网站怎么建设?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
网站制作模板下载什么软件,ppt模板免费下载网站?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
如何选择高效稳定的ISP建站解决方案?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
如何用虚拟主机快速搭建网站?详细步骤解析
建站10G流量真的够用吗?如何应对访问高峰?
如何用5美元大硬盘VPS安全高效搭建个人网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何通过建站之星自助学习解决操作问题?
威客平台建站流程解析:高效搭建教程与设计优化方案
*请认真填写需求信息,我们会在24小时内与您取得联系。