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对数字的格式化使用说明
Jan 12 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
Aug 05 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 Javascript
基于jQuery的表单填充实例
Aug 22 jQuery
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
通过实例解析javascript Date对象属性及方法
Nov 04 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
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
python检查指定文件是否存在的方法
2015/07/06 Python
python中异常捕获方法详解
2017/03/03 Python
Python队列的定义与使用方法示例
2017/06/24 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
毕业论文致谢词
2015/05/14 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Python实战之疫苗研发情况可视化
2021/05/18 Python