全面解析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 相关文章推荐
Web开发之JavaScript
Mar 29 Javascript
JavaScript中匿名、命名函数的性能测试
Sep 04 Javascript
javascript实现简单的进度条
Jul 02 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
ES6中class类用法实例浅析
Apr 06 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
js轮播图的插件化封装详解
Jul 17 Javascript
仿京东快报向上滚动的实例
Dec 13 Javascript
layui 表格的属性的显示转换方法
Aug 14 Javascript
通过实例了解js函数中参数的传递
Jun 15 Javascript
Vue开发环境跨域访问问题
Jan 22 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
封装一个PDO数据库操作类代码
2009/09/09 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
Yii rules常用规则示例
2016/03/15 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python中的ceil()方法使用教程
2015/05/14 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
centos7之Python3.74安装教程
2019/08/15 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
python 下划线的不同用法
2020/10/24 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
机电专业毕业生推荐信
2013/11/10 职场文书
社区平安建设方案
2014/05/25 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
运输公司工作总结
2015/08/11 职场文书