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 相关文章推荐
Prototype使用指南之selector.js说明
Oct 26 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
基于JavaScript实现仿京东图片轮播效果
Nov 06 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
BootStrap中
Dec 10 Javascript
AngularJs 延时器、计时器实例代码
Sep 16 Javascript
vue自动化表单实例分析
May 06 Javascript
js字符串处理之绝妙的代码
Apr 05 Javascript
vue中格式化时间过滤器代码实例
Apr 17 Javascript
layer弹出层取消遮罩的方法
Sep 25 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下intval()和(int)转换使用与区别
2008/07/18 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python编写一个闹钟功能
2017/07/11 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
探亲假请假条
2014/04/11 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
匿名检举信范文
2015/03/02 职场文书
优质护理心得体会
2016/01/22 职场文书
Redis集群的关闭与重启操作
2021/07/07 Redis