全面解析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 轻松支持函数重载 (Part 2 - 实现)
Aug 04 Javascript
jQuery代码优化 选择符篇
Nov 01 Javascript
Express作者TJ告别Node.js奔向Go
Jul 14 Javascript
JS扩展方法实例分析
Apr 15 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
VScode格式化ESlint方法(最全最好用方法)
Sep 10 Javascript
Vue多选列表组件深入详解
Mar 02 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连接mysql数据库代码
2009/03/10 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python retrying模块的使用方法详解
2019/09/25 Python
详解Python time库的使用
2019/10/10 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
python 实现端口扫描工具
2020/12/18 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
复古服装:RetroStage
2019/05/10 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
植树造林的宣传标语
2014/06/23 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
九寨沟导游词
2015/02/02 职场文书
教师病假条范文
2015/08/17 职场文书
诚信高考倡议书
2019/06/24 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
详解CSS3浏览器兼容
2022/12/24 HTML / CSS