全面解析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 相关文章推荐
使用简洁的jQuery方法实现隔行换色功能
Jan 02 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
Jan 13 Javascript
浅析JavaScript基本类型与引用类型
May 28 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
jQuery实现行文字链接提示效果的方法
Mar 10 Javascript
JS实现简洁、全兼容的拖动层实例
May 13 Javascript
完美解决IE9浏览器出现的对象未定义问题
Sep 29 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
Oct 28 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
vue+swiper实现侧滑菜单效果
Dec 28 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
全面解析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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
js分页工具实例
2015/01/28 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python实现上传下载文件功能
2020/11/19 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
python设置环境变量的原因和方法
2019/06/24 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
网络书店创业计划书
2014/02/07 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
擅自离岗检讨书
2014/09/12 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
详解python的异常捕获
2022/03/03 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server