全面解析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 相关文章推荐
seajs1.3.0源码解析之module依赖有序加载
Nov 07 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
jQuery排序插件tableSorter使用方法
Feb 10 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
Angular中实现树形结构视图实例代码
May 05 Javascript
深入浅出es6模板字符串
Aug 26 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
layer iframe 设置关闭按钮的方法
Sep 12 Javascript
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
全面解析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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
详解JS模块导入导出
2017/12/20 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
angular多语言配置详解
2019/05/16 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
python冒泡排序简单实现方法
2015/07/09 Python
用Python解决计数原理问题的方法
2016/08/04 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
高中生的自我评价
2014/03/04 职场文书
士力架广告词
2014/03/20 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
离职告别感言
2015/08/04 职场文书
护士医德医风心得体会
2016/01/25 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
python_tkinter弹出对话框创建
2022/03/20 Python
Python 图片添加美颜效果
2022/04/28 Python