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 24 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
Jul 17 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
Oct 17 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
JS中如何比较两个Json对象是否相等实例代码
Jul 13 Javascript
Angularjs结合Bootstrap制作的一个TODO List
Aug 18 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
Angular2 组件间通过@Input @Output通讯示例
Aug 24 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
Postman参数化实现过程及原理解析
Aug 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
教你php如何实现验证码
2016/01/20 PHP
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
js实现双色球效果
2020/08/02 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
详解Python文件修改的两种方式
2019/08/22 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
小学生作文评语大全
2014/04/21 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
学生通报表扬范文
2015/05/04 职场文书
趣味运动会简讯
2015/07/20 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
Python可视化神器pyecharts绘制水球图
2022/07/07 Python
element tree树形组件回显数据问题解决
2022/08/14 Javascript