全面解析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 相关文章推荐
用JQuery 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
xml转json的js代码
Aug 28 Javascript
intro.js 页面引导简单用法 分享
Aug 06 Javascript
判断文件是否正在被使用的JS代码
Dec 21 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
Mar 19 Javascript
jquery选择器需要注意的问题
Nov 26 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
Sep 22 Javascript
JS pushlet XMLAdapter适配器用法案例解析
Oct 16 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
sae使用smarty模板的方法
2013/12/17 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
Javascript Select操作大集合
2009/05/26 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JS的数组迭代方法
2015/02/05 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
Python切片用法实例教程
2014/09/08 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Python版名片管理系统
2018/11/30 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
妇女儿童发展规划实施方案
2014/03/16 职场文书
一分钟演讲稿
2014/04/30 职场文书
会计专业自荐书
2014/07/08 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python
Python学习之异常中的finally使用详解
2022/03/16 Python