Afixo Bootstrap JS


JS Affix (affix.js)

O plugin Affix permite que um elemento seja afixado (bloqueado) em uma área da página. Isso é frequentemente usado com menus de navegação ou botões de ícones sociais, para torná-los "grudados" em uma área específica enquanto rolam para cima e para baixo na página.

O plugin ativa e desativa esse comportamento (altera o valor da posição CSS de estático para fixo), dependendo da posição de rolagem.

O plugin affix alterna entre três classes: .affix, .affix-top, e .affix-bottom. Cada classe representa um estado particular. Você deve adicionar propriedades CSS para lidar com as posições reais, com exceção da position:fixed classe .affix.

Para obter mais informações, leia nosso Tutorial de afixo do Bootstrap .

Dica: O plugin Affix é frequentemente usado em conjunto com o plugin Scrollspy .


Via dados-* Atributos

Adicione data-spy="affix"ao elemento que você deseja espionar e o atributo para calcular a posição do pergaminho.data-offset-top|bottom="number"

Exemplo

<ul class="nav nav-pills nav-stacked" data-spy="affix" data-offset-top="205">

Por JavaScript

Ative manualmente com:

Exemplo

$('.nav').affix({offset: {top: 150} });


Opções de afixação

As opções podem ser passadas por meio de atributos de dados ou JavaScript. Para atributos de dados, anexe o nome da opção a data-, como em 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

Afixar eventos

A tabela a seguir lista todos os eventos de afixo disponíveis.

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)

Mais exemplos

Barra de navegação afixada

Crie um menu de navegação fixo horizontal:

Exemplo

<nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">

Usando jQuery para afixar automaticamente uma barra de navegação

Use o método outerHeight() do jQuery para afixar a barra de navegação após o usuário ter passado por um elemento especificado (<header>):

Exemplo

$(".navbar").affix({offset: {top: $("header").outerHeight(true)} });

Scrollspy & Afixo

Usando o plugin Affix junto com o plugin Scrollspy :

Menu horizontal (barra de navegação)

<body data-spy="scroll" data-target=".navbar" data-offset="50">

<nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">
...
</nav>

</body>

Menu Vertical (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>

Barra de navegação animada no afixo

Use CSS para manipular as diferentes classes .afix:

Exemplo - Altere a cor de fundo e o preenchimento da barra de navegação na rolagem

.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;
}

Exemplo - Deslize na barra de navegação

.affix {
  top: 0;
  width: 100%;
  -webkit-transition: all .5s ease-in-out;
  transition: all .5s ease-in-out;
}

.affix-top {
  position: static;
  top: -35px;
}