全面解析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 YUI 读码日记之 YAHOO.util.Dom - Part.3
Mar 22 Javascript
Jquery 高亮显示文本中重要的关键字
Dec 24 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
JS动态加载当前时间的方法
Feb 09 Javascript
JS实现光滑展开合拢的菜单效果代码
Sep 16 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
Nov 08 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
Sep 21 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
Terran剧情介绍
2020/03/14 星际争霸
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php分页示例分享
2014/04/30 PHP
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python 异常处理的实例详解
2017/09/11 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python与mysql数据库交互的实现
2020/01/06 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Python中logger日志模块详解
2020/08/04 Python
python如何绘制疫情图
2020/09/16 Python
银行见习期自我鉴定
2014/01/29 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
求职信怎么写范文
2014/05/26 职场文书
先进事迹材料范文
2014/12/29 职场文书
企业愿景口号
2015/12/25 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL