全面解析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 相关文章推荐
jquery通过a标签删除table中的一行的代码
Dec 02 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
jquery复选框多选赋值给文本框的方法
Jan 27 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
跟我学习javascript的this关键字
May 28 Javascript
jQuery数组处理函数整理
Aug 03 Javascript
vue父子组件的嵌套的示例代码
Sep 08 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
TypeScript中的方法重载详解
Apr 12 Javascript
详解mpvue开发微信小程序基础知识
Sep 23 Javascript
vue实现可拖拽的dialog弹框
May 13 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实现在线阅读PDF文件的方法
2015/06/23 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
YII框架http缓存操作示例
2019/04/29 PHP
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python 实现字符串下标的输出功能
2020/02/13 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
台湾森森购物网:U-mall
2017/10/16 全球购物
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
客服部工作职责范本
2014/02/14 职场文书
作风建设年活动总结
2014/08/27 职场文书
企业挂职心得体会
2014/09/10 职场文书
刑事撤诉申请书
2015/05/18 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS