全面解析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 相关文章推荐
贴一个在Mozilla中常用的Javascript代码
Jan 09 Javascript
JS实现日期加减的方法
Nov 29 Javascript
jquery动态加载js/css文件方法(自写小函数)
Oct 11 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 Javascript
JS根据生日月份和日期计算星座的简单实现方法
Nov 24 Javascript
Angular2监听页面大小变化的解决方法
Oct 09 Javascript
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
vue.js 实现输入框动态添加功能
Jun 25 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
微信小程序使用字体图标的方法
May 23 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 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
服务器web工具 php环境下
2010/12/29 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
vue实现简单图片上传
2020/06/30 Javascript
javascript实现时钟动画
2020/12/03 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Pandas的Apply函数具体使用
2020/07/21 Python
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
运动会通讯稿200字
2014/02/16 职场文书
团队经理竞聘书
2014/03/31 职场文书
委托培训协议书
2014/11/17 职场文书
户外拓展训练感想
2015/08/07 职场文书
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS