Bootstrap 4 Scrollspy (Avançado)


Bootstrap 4 Scrollspy

Scrollspy é usado para atualizar automaticamente os links em uma lista de navegação com base na posição de rolagem .


Como criar um Scrollspy

O exemplo a seguir mostra como criar um scrollspy:

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-expand-sm bg-dark navbar-dark fixed-top">
...
  <ul class="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>

Exemplo explicado

Adicione data-spy="scroll"ao elemento que deve ser usado como área de rolagem (geralmente esse é o <body>elemento).

Em seguida, adicione o data-targetatributo com um valor do id ou o nome da classe da barra de navegação ( .navbar). Isso é para garantir que a barra de navegação esteja conectada à área rolável.

Observe que os elementos roláveis ​​devem corresponder ao ID dos links dentro dos itens da lista da barra de navegação ( <div id="section1">matches <a href="#section1">).

O atributo opcional data-offsetespecifica o número de pixels a serem deslocados do topo ao calcular a posição de rolagem. Isso é útil quando você sente que os links dentro da barra de navegação alteram o estado ativo muito cedo ou muito cedo ao pular para os elementos roláveis. O padrão é 10 pixels.

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



Menu Vertical Scrollspy

Neste exemplo, usamos as pílulas de navegação vertical do Bootstrap como menu:

Exemplo

<body data-spy="scroll" data-target="#myScrollspy" data-offset="1">

  <div class="container-fluid">
    <div class="row">
      <nav class="col-sm-3 col-4" id="myScrollspy">
        <ul class="nav nav-pills flex-column">
          <li class="nav-item">
            <a class="nav-link active" href="#section1">Section 1</a>
          </li>
          ...
        </ul>
      </nav>
      <div class="col-sm-9 col-8">
        <div id="section1">
          <h1>Section 1</h1>
          <p>Try to scroll this page and look at the menu while scrolling!</p>
        </div>
        ...
      </div>
    </div>
  </div>

</body>

Referência completa do Bootstrap Scrollspy

Para uma referência completa de todas as opções, métodos e eventos do scrollspy, acesse nossa Referência do Bootstrap JS Scrollspy .