keyboard_double_arrow_left
help Help & getting started

Scrollspy.

Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport. Click here

Navbar

Scroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well.

First heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Second heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Third heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Fourth heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Fifth heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.


<nav id="navbar-example2" class="navbar bg-body-tertiary px-3 mb-3">
  <a class="navbar-brand" href="javascript:void(0);">Navbar</a>
  <ul class="nav nav-pills">
	<li class="nav-item">
	  <a class="nav-link" href="#scrollspyHeading1">First</a>
	</li>
	<li class="nav-item">
	  <a class="nav-link" href="#scrollspyHeading2">Second</a>
	</li>
	<li class="nav-item dropdown">
	  <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="javascript:void(0);" role="button" aria-expanded="false">Dropdown</a>
	  <ul class="dropdown-menu">
		<li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li>
		<li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li>
		<li><hr class="dropdown-divider"></li>
		<li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li>
	  </ul>
	</li>
  </ul>
</nav>
<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" class="scrollspy-example bg-body-tertiary p-3 rounded-2" tabindex="0">
  <h4 id="scrollspyHeading1">First heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading2">Second heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading3">Third heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading4">Fourth heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading5">Fifth heading</h4>
  <p>...</p>
</div>

Nested nav

Scrollspy also works with nested .navs. If a nested .nav is .active, its parents will also be .active. Scroll the area next to the navbar and watch the active class change.

Item 1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 1-1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 1-2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3-1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3-2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.


<div class="row">
  <div class="col-4">
	<nav id="navbar-example3" class="h-100 flex-column align-items-stretch pe-4 border-end">
	  <nav class="nav nav-pills flex-column">
		<a class="nav-link" href="#item-1">Item 1</a>
		<nav class="nav nav-pills flex-column">
		  <a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a>
		  <a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a>
		</nav>
		<a class="nav-link" href="#item-2">Item 2</a>
		<a class="nav-link" href="#item-3">Item 3</a>
		<nav class="nav nav-pills flex-column">
		  <a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a>
		  <a class="nav-link ms-3 my-1" href="#item-3-2">Item 3-2</a>
		</nav>
	  </nav>
	</nav>
  </div>

  <div class="col-8">
	<div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-smooth-scroll="true" class="scrollspy-example-2" tabindex="0">
	  <div id="item-1">
		<h4>Item 1</h4>
		<p>...</p>
	  </div>
	  <div id="item-1-1">
		<h5>Item 1-1</h5>
		<p>...</p>
	  </div>
	  <div id="item-1-2">
		<h5>Item 1-2</h5>
		<p>...</p>
	  </div>
	  <div id="item-2">
		<h4>Item 2</h4>
		<p>...</p>
	  </div>
	  <div id="item-3">
		<h4>Item 3</h4>
		<p>...</p>
	  </div>
	  <div id="item-3-1">
		<h5>Item 3-1</h5>
		<p>...</p>
	  </div>
	  <div id="item-3-2">
		<h5>Item 3-2</h5>
		<p>...</p>
	  </div>
	</div>
  </div>
</div>

List group

Scrollspy also works with .list-groups. Scroll the area next to the list group and watch the active class change.

Item 1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 4

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.


<div class="row">
  <div class="col-4">
	<div id="list-example" class="list-group">
	  <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a>
	  <a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a>
	  <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a>
	  <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a>
	</div>
  </div>
  <div class="col-8">
	<div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
	  <h4 id="list-item-1">Item 1</h4>
	  <p>...</p>
	  <h4 id="list-item-2">Item 2</h4>
	  <p>...</p>
	  <h4 id="list-item-3">Item 3</h4>
	  <p>...</p>
	  <h4 id="list-item-4">Item 4</h4>
	  <p>...</p>
	</div>
  </div>
</div>

Simple Anchors

Scrollspy is not limited to nav components and list groups, so it will work on any <a> anchor elements in the current document. Scroll the area and watch the .active class change.

Item 1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 4

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 5

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.


<div class="row">
  <div class="col-4">
	<div id="simple-list-example" class="d-flex flex-column gap-2 simple-list-example-scrollspy text-center">
	  <a class="p-1 rounded" href="#simple-list-item-1">Item 1</a>
	  <a class="p-1 rounded" href="#simple-list-item-2">Item 2</a>
	  <a class="p-1 rounded" href="#simple-list-item-3">Item 3</a>
	  <a class="p-1 rounded" href="#simple-list-item-4">Item 4</a>
	  <a class="p-1 rounded" href="#simple-list-item-5">Item 5</a>
	</div>
  </div>
  <div class="col-8">
	<div data-bs-spy="scroll" data-bs-target="#simple-list-example" data-bs-offset="0" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
	  <h4 id="simple-list-item-1">Item 1</h4>
	  <p>...</p>
	  <h4 id="simple-list-item-2">Item 2</h4>
	  <p>...</p>
	  <h4 id="simple-list-item-3">Item 3</h4>
	  <p>...</p>
	  <h4 id="simple-list-item-4">Item 4</h4>
	  <p>...</p>
	  <h4 id="simple-list-item-5">Item 5</h4>
	  <p>...</p>
	</div>
  </div>
</div>