Home  >  Article  >  Web Front-end  >  An in-depth analysis of automatic positioning buoys in Bootstrap

An in-depth analysis of automatic positioning buoys in Bootstrap

青灯夜游
青灯夜游forward
2021-04-25 19:08:231720browse

This article will take you to learn more about the automatic positioning buoy in Bootstrap. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

An in-depth analysis of automatic positioning buoys in Bootstrap

The main function of the Affix plug-in is to add or delete position:fixed to an element (an element that needs to be fixed) through the plug-in to achieve a sticky fixation effect of the element in the browser window. [Related recommendations: "bootstrap tutorial"]

Basic usage

First of all, let’s take a look at an Apple official website for automatic Application of positioning buoy

As can be seen from the git diagram above, when the Macbook column is scrolled to a certain height, it is fixed at the top of the window and will no longer move

The Affix plug-in can fix the positioning of any element. The simplest method is to trigger it through the custom attribute data. It mainly includes two parameters:

1. data-spy: value affix, indicating that the element is fixed.

2. data-offset: an integer value, such as 90, indicating that the values ​​​​of the elements top and bottom are both 90px, which includes two methods: data-offset-top and data-offset-bottom

data-offset-top is used to set the distance of the element from the top. For example, 90 means that the element is 90px from the top. When the user drags the scroll bar down from the top, when the scrolling distance is greater than 90px, the affix element will no longer scroll and will be fixed at the top of the browser window

data- offset-bottom is just the opposite of 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>

[Setting CSS]

When using the Affix plug-in, content must be positioned through CSS. The Affix plug-in switches between three classes, each class presents a specific state: .affix, .affix-top and .affix-bottom

1. At the beginning, The plugin adds .affix-top to indicate the element's topmost position. No CSS positioning is required at this time

2. When scrolling past the element with Affix added, the actual Affix should be triggered. At this time .affix will replace .affix-top, and set position: fixed (provided by Bootstrap’s CSS code)

At this time , you need to manually set .affix, such as .affix{top:0;} means stopping at the top of the window

3. If the bottom offset is defined, when the scroll reaches this position, .affix should be is replaced with .affix-bottom. Since the offset is optional, setting it requires that the appropriate CSS be set as well. In this case please add 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>

An in-depth analysis of automatic positioning buoys in Bootstrap

JS trigger# if necessary

##Sometimes, when using this plugin, the top and bottom heights are not necessarily fixed, so it is not appropriate to use declarative usage during initialization. At this time, using javascript becomes more flexible, because it not only supports passing in numeric offsets, but also supports passing in functions that can dynamically calculate offsets

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

[Event]

The affix component provides 6 types of events, that is, affix and affixed each correspond to events in 3 states (normal, 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(){
    $(&#39;.test&#39;).affix({
        offset:{
            top:function(){
                return (this.top = $(&#39;header&#39;).outerHeight(true))
            }
        }
    }).on(&#39;affix.bs.affix&#39;,function(){
        $(this).html(&#39;我被固定在窗口顶部&#39;);
    }).on(&#39;affix-top.bs.affix&#39;,function(){
        $(this).html(&#39;我正跟随滚动条滚动&#39;);
    })
})    
</script>

An in-depth analysis of automatic positioning buoys in Bootstrap

For more programming-related knowledge, please visit:

programming video! !

The above is the detailed content of An in-depth analysis of automatic positioning buoys in Bootstrap. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete