全面解析Bootstrap中transition、affix的使用方法


Posted in Javascript onMay 30, 2016

一、Transition(过滤)
作为一个基础支持的组件,被其他组件多次引用。实现根据浏览器支持transition的能力,然后绑定动画的结束事件;
首先:创建一个Element;
然后:迭代查看此元素支持的transition动画名称
Transition实现的技巧,主要是重写了jquery的event对象,代码如下:

$(function () {
 $.support.transition = transitionEnd()

 if (!$.support.transition) return

 $.event.special.bsTransitionEnd = {
  bindType: $.support.transition.end,
  delegateType: $.support.transition.end,
  handle: function (e) {
  if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
  }
 }
 })

二、Affix(自动浮动定位)
1、Target:参数表示其定位参考节点(应该是产生滚动条的父容器对象),默认是window
2、Data-offset设置的top和bottom值,只会用于计算表达式,不会设置到css中
3、三种位置定位样式类:

3.1、Affix-top:到达页面顶部的时候会添加的样式
3.2、Affix:在页面中部的时候会添加的样式
3.3、Affix-bottom:在页面底部的时候会添加的样式

4、处理公式:

4.1、Top:traget的滚动条高度(scrollTop)< 元素设定离顶位置的距离(offsetTop)(首次判断)
    4.1.1、scrollTop设置为:元素本身定位的top(元素当前定位离文档原点的距离)(非首次)
4.2、getPinnedOffset:获取粘住元素top ? target滚动条的top
4.3、bottom:如果粘住元素是首次bottom定位的时候,那么bottom就是 target滚动条高度 + target元素的高度 >= 整个文档滚动条高度 ? 粘住元素距离底部的高度
   4.3.1、如果是非首次bottom定位
      1)、如果offsetTop(元素设定离顶位置的距离)不为空,target的top  + getpinnedOffset的值 > 粘住元素当前定位到top的值
      2)、如果offsetTop为空,target的top

+ target元素的高度 > 文档高度 ? 粘住元素距离底部的高度
4、能改变粘住元素的只有他的top,top值为:文档高度 — 粘住元素高度 — 粘住元素距离底部的高度

5、坑之所在:

1)、top和bottom一起使用的时候,会出现冲突,原因:

    Affix-bottom,也就是到达页面底部的时候,bootstrap是用offset来设置的top值,给元素加了position:relative值,这就导致在回到页面顶部后,再次向下滚动时候,没有任何效果
原因:行内样式设置的relative会覆盖class中设置的fixed样式

全面解析Bootstrap中transition、affix的使用方法

6、总结

1)、在top情况表现良好,在bottom情况下需要自己加入手动控制
2)、应用affix控件,至少要自己重写affix样式,用于控制粘住条的定位。

如果大家还想深入学习,可以点击这里进行学习,再为大家附一个精彩的专题:Bootstrap学习教程

本文系列教程整理到:Bootstrap基础教程 专题中,欢迎点击学习。

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
Javascript操纵Cookie实现购物车程序
Feb 15 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 Javascript
基于jquery的loading 加载提示效果实现代码
Sep 01 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
JS在浏览器中解析Base64编码图像
Feb 09 Javascript
如何从零开始利用js手写一个Promise库详解
Apr 19 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
详解 javascript对象创建模式
Oct 30 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 #Javascript
js实现页面a向页面b传参的方法
May 29 #Javascript
浅析jQuery中使用$所引发的问题
May 29 #Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 #Javascript
jQuery实现图像旋转动画效果
May 29 #Javascript
jQuery中使用animate自定义动画的方法
May 29 #Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 #Javascript
You might like
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
Python 解析xml文件的示例
2020/09/29 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
出纳的岗位职责
2013/11/09 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis