Bootstrap JS Affix
JS Affix (affix.js)
Plugin Affix umožňuje, aby se prvek připojil (zamkl) k oblasti na stránce. To se často používá s navigačními nabídkami nebo tlačítky sociálních ikon, aby se „přilepily“ na určitou oblast při posouvání nahoru a dolů po stránce.
Plugin toto chování zapíná a vypíná (mění hodnotu pozice CSS ze statické na pevnou) v závislosti na pozici posouvání.
Plugin pro afix přepíná mezi třemi třídami: .affix
, .affix-top
a
.affix-bottom
. Každá třída představuje určitý stav. Musíte přidat vlastnosti CSS, abyste zvládli skutečné pozice, s výjimkou position:fixed
na .affix
třídě.
Další informace najdete v našem kurzu Bootstrap Affix Tutorial .
Tip: Plugin Affix se často používá společně s pluginem Scrollspy .
Přes data-* Atributy
Přidejte data-spy="affix"
k prvku, který chcete špehovat, a
atribut pro výpočet pozice svitku.data-offset-top|bottom="number"
Příklad
<ul class="nav nav-pills nav-stacked" data-spy="affix" data-offset-top="205">
Prostřednictvím JavaScriptu
Povolit ručně pomocí:
Příklad
$('.nav').affix({offset: {top: 150} });
Možnosti připojení
Možnosti lze předávat prostřednictvím atributů dat nebo JavaScriptu. U datových atributů připojte název volby k data-, jako v data-offset="".
Name | Type | Default | Description |
---|---|---|---|
offset | number | object | function | 10 |
Specifies the number of pixels to offset from screen when calculating position of scroll. When using a single number, the offset is added to both top and bottom directions. If you only want to control the top or the bottom, use an object, like offset: {top:25} For multiple offsets, use offset: {top:25, bottom:50} Tip: Use a function to dynamically provide an offset (can be useful for responsive designs) |
target | selector | node | element | the window object | Specifies the target element of the affix |
Připojit události
V následující tabulce jsou uvedeny všechny dostupné události připojení.
Event | Description | Try it |
---|---|---|
affix.bs.affix | Occurs before fixed positioning is added to the element (e.g, when the .affix-top class is about to be replaced with the .affix class) |
|
affixed.bs.affix | Occurs after fixed positioning is added to the element (e.g., after the .affix-top class is replaced with the .affix class) |
|
affix-top.bs.affix | Occurs before the top element returns to its original (non-fixed) position (e.g., the .affix class is about to be replaced with .affix-top ) |
|
affixed-top.bs.affix | Occurs after the top element returns to its original (non-fixed) position (e.g., the .affix class has been replaced with .affix-top ) |
|
affix-bottom.bs.affix | Occurs before the bottom element returns to its original (non-fixed) position (e.g., the .affix class is about to be replaced with .affix-bottom ) |
|
affixed-bottom.bs.affix | Occurs after the bottom element returns to its original (non-fixed) position (e.g., the .affix class has been replaced with .affix-bottom ) |
Další příklady
Připevněná navigační lišta
Vytvořte vodorovnou připojenou navigační nabídku:
Příklad
<nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">
Použití jQuery k automatickému připojení navigačního panelu
Použijte metodu externalHeight() jQuery k připojení navigační lišty poté, co uživatel prošel zadaným prvkem (<header>):
Příklad
$(".navbar").affix({offset: {top: $("header").outerHeight(true)}
});
Scrollspy & Affix
Použití pluginu Affix spolu s pluginem Scrollspy :
Horizontální nabídka (Navbar)
<body data-spy="scroll" data-target=".navbar" data-offset="50">
<nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">
...
</nav>
</body>
Vertikální nabídka (Sidenav)
<body data-spy="scroll" data-target="#myScrollspy" data-offset="15">
<nav class="col-sm-3" id="myScrollspy">
<ul class="nav nav-pills nav-stacked" data-spy="affix" data-offset-top="205">
...
</nav>
</body>
Animovaný navigační panel na štítku
Použijte CSS k manipulaci s různými třídami .affix:
Příklad - Změňte barvu pozadí a odsazení navigační lišty při posouvání
.affix {
top: 0;
width: 100%;
-webkit-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
background-color: #F44336;
border-color: #F44336;
}
.affix a {
color: #fff !important;
padding: 15px !important;
-webkit-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
.affix-top a {
padding: 25px !important;
}
Příklad - Přesuňte se do navigační lišty
.affix {
top: 0;
width: 100%;
-webkit-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
.affix-top {
position: static;
top: -35px;
}