全面解析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 相关文章推荐
模拟用户操作Input元素,不会触发相应事件
May 11 Javascript
JS 判断代码全收集
Apr 28 Javascript
基于JQuery的一句话搞定手风琴菜单
Sep 14 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
Mar 02 Javascript
js点击文本框后才加载验证码实例代码
Oct 20 Javascript
js模拟微博发布消息
Feb 23 Javascript
React Native中Navigator的使用方法示例
Oct 13 Javascript
vue数据控制视图源码解析
Mar 28 Javascript
vue-router动态设置页面title的实例讲解
Aug 30 Javascript
JS模拟浏览器实现全局搜索功能
Sep 11 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
全面解析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
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
javascript入门·对象属性方法大总结
2007/10/01 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
vue axios请求超时的正确处理方法
2018/04/02 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
python测试驱动开发实例
2014/10/08 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python发送邮件功能实现代码
2016/07/15 Python
python对json的相关操作实例详解
2017/01/04 Python
Python线性方程组求解运算示例
2018/01/17 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
Python 日期与时间转换的方法
2020/08/01 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
为什么需要版本控制
2016/10/28 面试题
办公自动化专业大学生职业规划书
2014/03/06 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
介绍信怎么写
2015/01/30 职场文书
导游词之河北野三坡
2019/12/11 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
python基础之错误和异常处理
2021/10/24 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers