全面解析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回调函数this指向问题
Feb 08 Javascript
jquery 实现表单验证功能代码(简洁)
Jul 03 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
May 14 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
javascript实现在线客服效果
Jul 15 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
深入学习js瀑布流布局
Oct 14 Javascript
Require.js的基本用法详解
Jul 03 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
前端天气插件tpwidget使用方法详解
Jun 24 Javascript
three.js着色器材质的内置变量示例详解
Aug 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
优化php效率,提高php性能的一些方法
2011/03/24 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
python对文件的操作方法汇总
2020/02/28 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
幼儿园大班教学反思
2014/02/10 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
优秀会计求职信
2014/07/04 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
入党介绍人意见2015
2015/06/01 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js