全面解析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字典探测用户名工具
Oct 05 Javascript
ajax 文件上传应用简单实现
Mar 03 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
BootStrap使用file-input插件上传图片的方法
Sep 05 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
Jquery EasyUI $.Parser
Jun 02 jQuery
20行js代码实现的贪吃蛇小游戏
Jun 20 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
每周一练 之 数据结构与算法(Stack)
Apr 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
GD输出汉字的函数的分析
2006/10/09 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
php强制下载类型的实现代码
2011/04/21 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
python清除函数占用的内存方法
2018/06/25 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
八年级数学教学反思
2014/01/31 职场文书
邀请书模板
2015/02/02 职场文书
2015教师年度考核评语
2015/03/25 职场文书
投资申请报告
2015/05/19 职场文书
钱学森电影观后感
2015/06/04 职场文书
安全生产学习心得体会
2016/01/18 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript