全面解析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 相关文章推荐
在UpdatePanel内jquery easyui效果失效的解决方法
Apr 11 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
JS弹性运动实现方法分析
Dec 15 Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 Javascript
JavaScript使用ZeroClipboard操作剪切板
May 10 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 Javascript
基于vue手写tree插件的那点事儿
Aug 20 Javascript
vue项目使用.env文件配置全局环境变量的方法
Oct 24 Javascript
vue+ts下对axios的封装实现
Feb 18 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 数组实例说明
2008/08/18 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
Javascript Objects详解
2014/09/04 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
python创建学生管理系统
2019/11/22 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers