The affix plugin toggles
position: fixed; on and off, emulating the effect found with
position: sticky;. The subnavigation on the right is a live demo of the affix plugin.
Note: Do not use the affix plugin on an element contained in a relatively positioned element, such as a pulled or pushed column, due to a Safari rendering bug.
Positioning via CSS
The affix plugin toggles between three classes, each representing a particular state:
.affix-bottom. You must provide the styles, with the exception of
position: fixed; on
.affix, for these classes yourself (independent of this plugin) to handle the actual positions.
Here's how the affix plugin works:
- To start, the plugin adds
.affix-topto indicate the element is in its top-most position. At this point no CSS positioning is required.
- Scrolling past the element you want affixed should trigger the actual affixing. This is where
position: fixed;(provided by Bootstrap's CSS).
- If a bottom offset is defined, scrolling past it should replace
.affix-bottom. Since offsets are optional, setting one requires you to set the appropriate CSS. In this case, add
Follow the above steps to set your CSS for either of the usage options below.
Via data attributes
To easily add affix behavior to any element, just add
data-spy="affix" to the element you want to spy on. Use offsets to define when to toggle the pinning of an element.
data-, as in
|offset||number | function | object||10||Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and bottom directions. To provide a unique, bottom and top offset just provide an object
|target||selector | node | jQuery element||the
||Specifies the target element of the affix.|
Activates your content as affixed content. Accepts an optional options
Recalculates the state of the affix based on the dimensions, position, and scroll position of the relevant elements. The
.affix-bottom classes are added to or removed from the affixed content according to the new state. This method needs to be called whenever the dimensions of the affixed content or the target element are changed, to ensure correct positioning of the affixed content.
Bootstrap's affix plugin exposes a few events for hooking into affix functionality.
|affix.bs.affix||This event fires immediately before the element has been affixed.|
|affixed.bs.affix||This event is fired after the element has been affixed.|
|affix-top.bs.affix||This event fires immediately before the element has been affixed-top.|
|affixed-top.bs.affix||This event is fired after the element has been affixed-top.|
|affix-bottom.bs.affix||This event fires immediately before the element has been affixed-bottom.|
|affixed-bottom.bs.affix||This event is fired after the element has been affixed-bottom.|