全面解析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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
神奇的7个jQuery 3D插件整理
Jan 06 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 Javascript
Javascript URI 解析介绍
Mar 15 Javascript
js实现带按钮的上下滚动效果
May 12 Javascript
javascript html5移动端轻松实现文件上传
Mar 27 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
JS实现面向对象继承的5种方式分析
Jul 21 Javascript
vue-cli webpack配置文件分析
May 20 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
python的常见命令注入威胁
2013/02/18 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
利用python实现数据分析
2017/01/11 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Python解析json代码实例解析
2019/11/25 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
Python常用类型转换实现代码实例
2020/07/28 Python
生日宴会答谢词
2014/01/09 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
辅导员学期工作总结
2015/08/14 职场文书
2016年母亲节广告语
2016/01/28 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python