全面解析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中的this指针
Mar 18 Javascript
JavaScript 页面编码与浏览器类型判断代码
Jun 03 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
简介JavaScript中toUpperCase()方法的使用
Jun 06 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
Oct 31 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
解决ionic和angular上拉加载的问题
Aug 03 Javascript
react实现点击选中的li高亮的示例代码
May 24 Javascript
VUE中使用MUI方法
Feb 12 Javascript
详解如何更好的使用module vuex
Mar 27 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
B2K与车机的中波PK
2021/03/02 无线电
收集的php编写大型网站问题集
2007/03/06 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
vue项目实现图片上传功能
2019/12/23 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Python图像读写方法对比
2020/11/16 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
护理学专业推荐信
2013/12/03 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电