全面解析Bootstrap中nav、collapse的使用方法


Posted in Javascript onMay 22, 2016

一、导航分析(nav)
源码文件:
_navs.scss:导航模块
Mixins/_nav-divider.scss:分隔线
Mixins/_nav-vertical-align.scss:垂直对齐

1、只是用css进行了样式修饰,对Js没有任何依赖
2、导航模块可以包含下拉模块
3、实现了水平、垂直、水平平均分配(table-cell实现,4.0移除)、tabs、胶囊等样式
4、Nav-divider:有一个像素的高度实现分隔线
5、Nav-stacked:垂直对齐实现
6、提供了tab-content类,用于包裹tab,然后tab-pane做为内容区域,用于tab页的扩展
7、Nav-tabs下的dropdown做了位置向上收缩一个像素的处理,因为nav-tabs会一条底线,不向上收缩一个像素,会有空白间隙出现

// Specific dropdowns
.nav-tabs .dropdown-menu {
 // make dropdown border overlap tab border
 margin-top: -1px;
 // Remove the top rounded corners here since there is a hard edge above the menu
 @include border-top-radius(0);
}

二、折叠效果(collapse)
源码文件:
Mixins/_component-animations.scss:collapse实现,实现折叠效果
Javascripts/bootstrap/collapse.js:折叠效果实现

1、$this.data()收集所有data-*数据
2、Parent属性:指定当前这个collapse被那个父级所控制,主要实现一控多的效果,以下是隐藏同一父级下所有子列表代码:

return $(this.options.parent)
   .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
   .each($.proxy(function (i, element) {
    var $element = $(element)
    this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
   }, this))
   .end()

3、Praent的实现,还需要整合.panel类,因为查找时认为所有子列表都是放在.panel类下的
4、Jquery的end()方法:结束当前筛选链,并将匹配元素集还原为之前的状态(链开始的位置)
$(“p”).find(‘.bak').find(‘span').end():还原到$(“p”)
5、scrollHeight:页面的高度(获取为要展开的实际高度/宽度),包含视窗不可见的部分,在collapse中用于识别要展开的最大值,在运动完成后都会对height/widht清空处理

var scrollSize = $.camelCase(['scroll', dimension].join('-'))
  this.$element
   .one('bsTransitionEnd', $.proxy(complete, this))
   .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])

6、对处理元素分为两类,一是要展开或隐藏的元素本身($element),二是触发展开或隐藏元素的按钮($trigger)
7、在hiden方法中,会重绘折叠区域的高度,然后获取实际区域的高度:
this.$element[dimension](this.$element[dimension]())[0].offsetHeigh
8、Hiden方法的触发默认情况下都是通过show方法中的判断触发的:

if (actives && actives.length) {
  Plugin.call(actives, 'hide')
   activesData || actives.data('bs.collapse', null)
  }

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript小数四舍五入多种方法实现
Dec 23 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
Feb 05 Javascript
火狐textarea输入法的bug的触发及解决
Jul 24 Javascript
获取表单控件原始(初始)值的方法
Aug 21 Javascript
JS实现静止元素自动移动示例
Apr 14 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
浅谈Express异步进化史
Sep 09 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
全面解析bootstrap格子布局
May 22 #Javascript
Bootstrap模块dropdown实现下拉框响应
May 22 #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
You might like
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
Python 占位符的使用方法详解
2019/07/10 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
项目经理的岗位职责
2013/11/23 职场文书
土木工程个人自荐信范文
2013/11/30 职场文书
青年文明号复核材料
2014/02/11 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
公积金接收函格式
2015/01/30 职场文书
用电申请报告范文
2015/05/18 职场文书
高中开学感言
2015/08/01 职场文书
小学远程教育工作总结
2015/08/13 职场文书
心理健康教育主题班会
2015/08/13 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技