Bootstrap模块dropdown实现下拉框响应


Posted in Javascript onMay 22, 2016

本文介绍了Bootstrap下拉框模块dropdown的使用方法,供大家参考,具体内容如下

一、源码分析:
Dropdowns.scss:
下拉框模块
Javascripts/bootstrap/dropdown.js:实现下拉框响应

二、功能及原理:
下拉选项卡,默认不能实现显示选中项的功能

原理:

1、利用dropdown类作为定位点,然后让子级的列表dropdown-menu绝对定位实现,还需要加一个单击点作为设置data-toggle=”dropdown”才能做关联。
2、 需要js插件的支持

三、源码分析:
1、caret:实现向下的三角形,利用边框实现的
    1.1、边框颜色默认是字体颜色
    1.2、三角形的实现:边框要有宽度,然后相邻两边需有宽度,但颜色透明;最后还需要元素为行内块元素,才能使其高、宽为0。
    1.3、代码如下

<span style="border-left: 4px solid; border-top: 4px solid transparent; border-bottom: 4px solid transparent; height: 0px; width: 0px; line-height: normal; display: inline-block; "></span>

2、在document上绑定了click事件的监听,监听类型为data-toggle=”dropdown”。
3、Js插件写的Plugin函数,和类的构造函数是用于js方式调用插件;
4、而data-*模式调用插件,用到是向document注入事件实现的,代码如下:

$(document)
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api','.dropdown-menu',Dropdown.prototype.keydown)

代码直接调用了Dropdown定义的方法,这里经妙的设计在于插件的框架,data-*模式的调用与Js插件模式的调用,而这两种调用模式却利用了同一份代码。
5、如果用Js插件调用,基础方法都要自己调用才行,在创建实例时只会绑定toggle事件。

var Dropdown = function (element) {
 $(element).on('click.bs.dropdown', this.toggle)
}

6、clearMenu:只会清除data-toggle=”dropdown”的元素
7、dropdown-backdrop:用于移动没有单击事件的处理
8、keydown:当dropdown按钮获取焦点的时候,按下键可以展开,按上键收缩的功能
9、data-target和herf=”#id”:是为了实现单击,展开指定的下拉列表,默认是展开与按钮后面兄弟节点:

<ul class="nav nav-pills navbar-nav">
 <li><a>Index</a></li>
 <li><a>产吕</a></li>
 <li > <a data-toggle="dropdown" href="#name" >实用工具</a></li>
</ul>
<div id="name" >
 <ul class="dropdown-menu" >
 <li><a>关于我们</a></li>
 </ul>
</div>

10、实现向上弹出子菜单,用bottom:100%(弹出子菜单bottom的定位)实现
11、应用示例

<div id="dropdown" class="dropdown">
<a id="dropdown-btn" data-target="#dropdown" >number</a>
<ul class="dropdown-menu" >
 <li><a>3343</a></li>
<li><a>555</a></li>
</ul>
</div>

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
JavaScript 模块的循环加载实现方法
Dec 13 Javascript
BootstrapValidator超详细教程(推荐)
Dec 07 Javascript
vue.js的安装方法
May 12 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
老生常谈JS中的继承及实现代码
Jul 06 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
JavaScript 截取字符串代码实例
Sep 05 Javascript
vuex存值与取值的实例
Nov 06 Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 Javascript
基于Bootstrap实现图片轮播效果
May 22 #Javascript
基于Vue.js的表格分页组件
May 22 #Javascript
js正则表达式replace替换变量方法
May 21 #Javascript
深入解析JavaScript中的立即执行函数
May 21 #Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 #Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 #Javascript
基于javascript实现表格的简单操作
May 21 #Javascript
You might like
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
js自定义事件代码说明
2011/01/31 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
老总助理工作岗位职责
2014/02/06 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
学生检讨书
2015/01/27 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
2015年度保密工作总结
2015/04/24 职场文书
运动会班级前导词
2015/07/20 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS