BootstrapBootstrap自动定位浮标

前的讲话

  Affix
插件主要意义就是由此插件给某个元素(需要一定的要素)添加或删除position:fixed,实现要素以浏览器窗口的粘性固定效果。本文将详细介绍Bootstrap自动定位浮标

 

基本用法

  首先,来拘禁一个苹果官网对自动定位浮标的以

  从上面的git图中而清楚,Macbook一棚滚动到早晚高度时,固定在窗口顶部便不再运动

  Affix
插件可以本着其余因素进行固化定位,其中比较简略的方,就是经打定义属性 data 来点。其关键概括个别只参数:

  1、data-spy:取值 affix,表示元素是永恒不移的。

  2、data-offset:整反复价,比如 90,表示元素 top 和 bottom 的价值都是
90px,其包括个别栽方式:data-offset-top 和 data-offset-bottom

  data-offset-top 用来装元素距离顶部的去。比如
90,表示元素距离顶部 90px,当用户从顶部向下拖动滚动条,当滚动的离开过
90px 时,affix 元素不再滚动,就会见一定于浏览器窗口顶部

  data-offset-bottom 刚好与 data-offset-top 相反

<div data-spy="affix" data-offset="90">affix元素</div>
<!-- 等价 -->
<div data-spy="affix" data-offset-top="90" data-offset-bottom="90">affix元素</div>

【设置CSS】

  于动Affix插件时,必须经 CSS 定位内容。Affix插件在三种 class
之间切换,每种 class 都展现了特定的状态: .affix、.affix-top 和
.affix-bottom

  1、在初步经常,插件添加 .affix-top 来指示元素于其的尽上方位置。这个时候不需要其他的
CSS 定位 

  2、当滚动经过上加了Affix的因素时,应触发实际的Affix。此时 .affix 会替代 .affix-top,同时安装 position:
fixed
(由 Bootstrap 的 CSS 代码提供)

  这时,需要手动设置.affix,如.affix{top:0;}表示已以窗口顶部

  3、如果定义了底部偏移,当滚动到达该职务时,应把 .affix 替换为 .affix-bottom。由于偏移是可选的,假如设置了该偏移,则要求同时装适当的
CSS。在这种情形下,请于必要之早晚添加 position: absolute;

<style>
.test{width: 100%;height: 50px;background-color:lightgreen;}
.affix{top:0px;}
</style>
</head>
<body style="height:1000px;" >
<div style="height:100px"></div>
<div data-spy="affix" data-offset="100" class="test"></div>
</body>

 

JS触发

  有时候,使用该插件,其顶部和脚的冲天不肯定是定位的,所以在初始化时以声明式用法不极端合适。这时,使用javascript用法虽显比灵活了,因为其不但支持传入数字型的offset,还支持传入能够动态计算offset的function函数

<script>
$('#myAffix').affix({
  offset: {
    top:100,
    bottom: function () {
      return (this.bottom = $('footer').outerHeight(true))
    }
  }
})    
</script>

【事件】

  affixBootstrap组件提供了6种轩然大波,即affix和affixed各对应于3栽状态(普通、top、bottom)时之轩然大波

affix.bs.affix    在定位结束之前立即触发
affixed.bs.affix    在定位结束之后立即触发
affix-top.bs.affix    在定位元素应用affixed-top效果之前立即触发
affixed-top.bs.affix    在定位元素应用affixed-top效果之后立即触发
affix-bottom.bs.affix    在定位元素应用affixed-bottom效果之前立即触发
affixed-bottom.bs.affix    在定位元素应用affixed-bottom效果之后立即触发

<style>
.test{width: 100%;height: 50px;background-color:lightgreen;}
header{height: 100px;}
.affix{top:0px;}
</style>
</head>
<body style="height:1000px;">
<header></header>
<div data-spy="affix" class="test"></div>
<script>
$(function(){
    $('.test').affix({
        offset:{
            top:function(){
                return (this.top = $('header').outerHeight(true))
            }
        }
    }).on('affix.bs.affix',function(){
        $(this).html('我被固定在窗口顶部');
    }).on('affix-top.bs.affix',function(){
        $(this).html('我正跟随滚动条滚动');
    })
})    
</script>

 

相关文章