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 相关文章推荐
javascript开发随笔一 preventDefault的必要
Nov 25 Javascript
AngularJS学习笔记之TodoMVC的分析
Feb 22 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 Javascript
react-redux中connect()方法详细解析
May 27 Javascript
Angularjs验证用户输入的字符串是否为日期时间
Jun 01 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
Jun 12 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
微信小程序的引导页实现代码
Jun 24 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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
用Python将结果保存为xlsx的方法
2019/01/28 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
单位创先争优活动方案
2014/01/26 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
创业大赛策划书
2014/03/01 职场文书
2015年工会工作总结
2015/03/30 职场文书
600字作文之感受大自然
2019/11/27 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
Python中的pprint模块
2021/11/27 Python
Go语言grpc和protobuf
2022/04/13 Golang
Python实现仓库管理系统
2022/05/30 Python