Bootstrap 5: Scrollspy


Obsah

    Zobrazit obsah

Scrollspy

Scrollspy se používá k automatické aktualizaci odkazů v navigačním seznamu na základě pozice posouvání.


Jak vytvořit Scrollspy

Následující příklad ukazuje, jak vytvořit scrollspy:

Příklad

<!-- The scrollable area -->
<body data-bs-spy="scroll" data-bs-target=".navbar" data-bs-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>

Zkuste to sami →

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
  <style>
  body {
      position: relative; 
  }
  </style>
</head>
<body data-bs-spy="scroll" data-bs-target=".navbar" data-bs-offset="50">

<nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
  <div class="container-fluid">
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link" href="#section1">Section 1</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#section2">Section 2</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#section3">Section 3</a>
      </li>
    </ul>
  </div>
</nav>

<div id="section1" class="container-fluid bg-success text-white" style="padding:100px 20px;">
  <h1>Section 1</h1>
  <p>Try to scroll this section and look at the navigation bar while scrolling! Try to scroll this section and look at the navigation bar while scrolling!</p>
  <p>Try to scroll this section and look at the navigation bar while scrolling! Try to scroll this section and look at the navigation bar while scrolling!</p>
</div>

<div id="section2" class="container-fluid bg-warning" style="padding:100px 20px;">
  <h1>Section 2</h1>
  <p>Try to scroll this section and look at the navigation bar while scrolling! Try to scroll this section and look at the navigation bar while scrolling!</p>
  <p>Try to scroll this section and look at the navigation bar while scrolling! Try to scroll this section and look at the navigation bar while scrolling!</p>
</div>

<div id="section3" class="container-fluid bg-secondary text-white" style="padding:100px 20px;">
  <h1>Section 3</h1>
  <p>Try to scroll this section and look at the navigation bar while scrolling! Try to scroll this section and look at the navigation bar while scrolling!</p>
  <p>Try to scroll this section and look at the navigation bar while scrolling! Try to scroll this section and look at the navigation bar while scrolling!</p>
</div>

</body>
</html>

Příklad vysvětlen

Přidejte data-bs-spy="scroll" k prvku, který by měl být použit jako posouvatelná oblast (často je to prvek <body>).

Poté přidejte atribut data-bs-target s hodnotou id nebo názvem třídy navigační lišty (.navbar ). Je to proto, abyste se ujistili, že navigační panel je spojen s posouvatelnou oblastí.

Posouvatelné prvky musí odpovídat ID odkazů v položkách seznamu navigační lišty (<div id="section1"> odpovídá <a href="#section1">).

Nepovinný atribut data-bs-offset určuje počet pixelů, které mají být odsazeny shora při výpočtu pozice posunu. To je užitečné, když máte pocit, že odkazy uvnitř navbar mění aktivní stav příliš brzy nebo příliš brzy při přeskakování na rolovatelné prvky. Výchozí hodnota je 10 pixelů.

Vyžaduje relativní umístění: Prvek s data-bs-spy="scroll" vyžaduje ke správnému fungování vlastnost CSS position s hodnotou "relative".