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 相关文章推荐
总结AJAX相关JS代码片段和浏览器模型
Aug 15 Javascript
19个很有用的 JavaScript库推荐
Jun 27 Javascript
Extjs单独定义各组件的实例代码
Jun 25 Javascript
jquery实现input输入框实时输入触发事件代码
Jan 28 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
Sep 01 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
React+Webpack快速上手指南(小结)
Aug 15 Javascript
vue子传父关于.sync与$emit的实现
Nov 05 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
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
移动节点的jquery代码
2014/01/13 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
中式结婚主持词
2014/03/14 职场文书
库房保管员岗位职责
2014/04/07 职场文书
教师工作态度自我评价
2015/03/05 职场文书
简历自我评价优缺点
2015/03/11 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL