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 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
犀利的js 函数集合
Jun 11 Javascript
JavaScript 权威指南(第四版) 读书笔记
Aug 11 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
在图片上显示左右箭头类似翻页的代码
Mar 04 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
Sep 06 Javascript
简单三步实现报表页面集成天气
Dec 15 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
微信小程序 wx:for遍历循环使用实例解析
Sep 09 Javascript
vue中keep-alive内置组件缓存的实例代码
Apr 16 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 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
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php防止用户重复提交表单
2015/11/02 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
Python实现单词翻译功能
2017/06/06 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
什么是python的列表推导式
2020/05/26 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
小学生寒假家长评语
2014/04/16 职场文书
中班幼儿评语大全
2014/04/30 职场文书
施工安全生产承诺书
2014/05/23 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
捐款仪式主持词
2015/07/04 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书