全面解析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 相关文章推荐
ExtJs Excel导出并下载IIS服务器端遇到的问题
Sep 16 Javascript
jQuery链使用指南
Jan 20 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
AnglarJs中的上拉加载实现代码
Feb 08 Javascript
Vue 创建组件的两种方法小结(必看)
Feb 23 Javascript
原生JavaScript实现todolist功能
Mar 02 Javascript
详解ES6通过WeakMap解决内存泄漏问题
Mar 09 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 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
php array_slice函数的使用以及参数详解
2008/08/30 PHP
PHP的博客ping服务代码
2012/02/04 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
js实现tab切换效果
2017/02/16 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
Python ftp上传文件
2016/02/13 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
Python处理session的方法整理
2019/08/29 Python
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
战友聚会邀请函
2014/01/18 职场文书
后备干部考察材料
2014/02/12 职场文书
学习标兵获奖感言
2014/02/20 职场文书
促销活动计划书
2014/05/02 职场文书
品牌推广策划方案
2014/05/28 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
教师考核鉴定意见
2015/06/05 职场文书
合作合同协议书
2016/03/21 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
GO中sync包自由控制并发示例详解
2022/08/05 Golang