tutoriais mais recente desenvolvimento web
 

Bootstrap JS Scrollspy


JS Scrollspy (scrollspy.js)

O plugin Scrollspy é usado para atualizar automaticamente links em uma lista de navegação baseado em posição de rolagem.

Para um tutorial sobre Scrollspy, leia nossa Scrollspy Tutorial Bootstrap .

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


Via data-* Atributos

Adicione data-spy="scroll" para o elemento que deve ser usado como a área de rolagem (muitas vezes este é o <body> elemento).

Em seguida, adicione o data-target atributo com um valor do id ou o nome da classe da barra de navegação ( .navbar ). Este é certificar-se de que a navbar está ligado com a área de rolagem.

Note-se que os elementos de rolagem deve coincidir com o ID dos links dentro de itens da lista do navbar ( <div id="section1"> corresponde <a href="#section1"> ).

O opcional data-offset atributo especifica o número de pixels para compensar, de cima no cálculo da posição de rolagem. Isso é útil quando você sente que as ligações dentro da barra de navegação muda o estado ativo muito cedo ou muito cedo, quando saltar para os elementos de rolagem. O padrão é 10 pixels.

Requer posicionamento relativo: O elemento com data-spy="scroll" requer a CSS position imóvel, com um valor de "relative" para funcionar corretamente.

Exemplo

<!-- The scrollable area -->
<body data-spy="scroll" data-target=".navbar" data-offset="50">

<!-- The navbar - The <a> elements are used to jump to a section in the scrollable area -->
<nav class="navbar navbar-inverse navbar-fixed-top">
...
  <ul class="nav navbar-nav">
    <li><a href="#section1">Section 1</a></li>
    ...
</nav>

<!-- Section 1 -->
<div id="section1">
  <h1>Section 1</h1>
  <p>Try to scroll this page and look at the navigation bar while scrolling!</p>
</div>
...

</body>
Tente você mesmo "

via JavaScript

Habilitar manualmente com:

Exemplo

$('body').scrollspy({target: ".navbar"})
Tente você mesmo "

Opções Scrollspy

Opções podem ser passadas através de atributos de dados ou JavaScript. Para atributos de dados, acrescentar o nome de opção para de dados, como na data-offset = "".

Nome Digitar Padrão Descrição Tente
offsetnumber10 Especifica o número de pixels para compensar a partir de cima no cálculo da posição do rolo Tente

Métodos Scrollspy

A tabela seguinte lista todos os métodos scrollspy disponíveis.

Método Descrição Tente
.scrollspy("refresh") Quando a adição e remoção de elementos do scrollspy, este método pode ser usado para actualizar o documento Tente

Eventos Scrollspy

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

Evento Descrição Tente
activate.bs.scrollspy Ocorre quando um novo item é ativado pela scrollspy Tente

Exemplos

Exemplos

Scrollspy com o rolo de animação

Como adicionar um pergaminho página suave para uma âncora na mesma página:

rolagem suave

// Add scrollspy to <body>
$('body').scrollspy({target: ".navbar", offset: 50});

// Add smooth scrolling to all links inside a navbar
$("#myNavbar a").on('click', function(event){

  // Prevent default anchor click behavior
  event.preventDefault();

  // Store hash (#)
  var hash = this.hash;

  // Using jQuery's animate() method to add smooth page scroll
  // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area (the speed of the animation)
  $('html, body').animate({
    scrollTop: $(hash).offset().top
  }, 800, function(){

    // Add hash (#) to URL when done scrolling (default click behavior)
    window.location.hash = hash;
  });
});
Tente você mesmo "

Scrollspy & Affix

Usando o Affix plug-in juntamente com o plugin Scrollspy:

Menu horizontal (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>
Tente você mesmo "

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>
Tente você mesmo "