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中的Split使用方法与技巧
Mar 09 Javascript
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
jQuery实现的在线答题功能
Apr 12 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
纯javascript移动优先的幻灯片效果
Nov 02 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
Jun 12 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
序列化模块json代码实例详解
Mar 03 Javascript
JS如何实现手机端输入验证码效果
May 13 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
async和DOM Script文件加载比较
2014/07/20 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
javascript 获取图片颜色
2009/04/05 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
vue登录注册实例详解
2019/09/14 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
python基于物品协同过滤算法实现代码
2018/05/31 Python
Numpy之文件存取的示例代码
2018/08/03 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python dlib人脸识别代码实例
2019/04/04 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
大学学雷锋活动总结
2014/06/26 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
小学运动会开幕词
2016/03/04 职场文书