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-topa .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 .affixtří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;
}