全面解析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 相关文章推荐
又一个图片自动缩小的JS代码
Mar 10 Javascript
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
Oct 19 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
Mar 12 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
js实现带农历和八字等信息的日历特效
May 16 Javascript
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
JavaScript实现随机点名器
Mar 25 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
使用字符串函数输出整数化的PHP版本号
2006/10/09 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
Python切片操作深入详解
2018/07/27 Python
Python的高阶函数用法实例分析
2019/04/11 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Python处理PDF与CDF实例
2020/02/26 Python
python 决策树算法的实现
2020/10/09 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
自立自强的名人事例
2014/02/10 职场文书
2014年技术员工作总结
2014/11/18 职场文书
优秀班组事迹材料
2014/12/24 职场文书