Spia pergamena
Aggiorna automaticamente la navigazione Bootstrap o elenca i componenti del gruppo in base alla posizione di scorrimento per indicare quale collegamento è attualmente attivo nella finestra.
Come funziona
Scrollspy ha alcuni requisiti per funzionare correttamente:
- Deve essere utilizzato su un componente di navigazione Bootstrap o su un gruppo di elenchi .
- Scrollspy richiede
position: relative;
l'elemento che stai spiando, di solito il<body>
. - Gli ancoraggi(
<a>
) sono obbligatori e devono puntare a un elemento con quelloid
.
Se implementato correttamente, il tuo gruppo di navigazione o elenco si aggiornerà di conseguenza, spostando la .active
classe da un elemento all'altro in base ai target associati.
Contenitori scorrevoli e accesso da tastiera
Se stai creando un contenitore scorrevole (diverso da <body>
), assicurati di avere un height
set e overflow-y: scroll;
applicato ad esso, insieme a tabindex="0"
per garantire l'accesso alla tastiera.
Esempio nella barra di navigazione
Scorri l'area sotto la barra di navigazione e osserva il cambio di classe attivo. Anche gli elementi a discesa verranno evidenziati.
Prima intestazione
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Secondo titolo
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Terzo titolo
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Quarto titolo
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Quinto titolo
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
<nav id="navbar-example2" class="navbar navbar-light bg-light px-3">
<a class="navbar-brand" href="#">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="#" 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-offset="0" class="scrollspy-example" 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>
Esempio con nav nidificato
Scrollspy funziona anche con nidificati .nav
s. Se un nidificato .nav
lo è .active
, lo saranno anche i suoi genitori .active
. Scorri l'area accanto alla barra di navigazione e osserva il cambio di classe attivo.
Articolo 1
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Voce 1-1
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Voce 1-2
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Articolo 2
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Voce 3
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Articolo 3-1
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Voce 3-2
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
<nav id="navbar-example3" class="navbar navbar-light bg-light flex-column align-items-stretch p-3">
<a class="navbar-brand" href="#">Navbar</a>
<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 data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-offset="0" tabindex="0">
<h4 id="item-1">Item 1</h4>
<p>...</p>
<h5 id="item-1-1">Item 1-1</h5>
<p>...</p>
<h5 id="item-1-2">Item 1-2</h5>
<p>...</p>
<h4 id="item-2">Item 2</h4>
<p>...</p>
<h4 id="item-3">Item 3</h4>
<p>...</p>
<h5 id="item-3-1">Item 3-1</h5>
<p>...</p>
<h5 id="item-3-2">Item 3-2</h5>
<p>...</p>
</div>
Esempio con list-group
Scrollspy funziona anche con .list-group
s. Scorri l'area accanto al gruppo dell'elenco e osserva il cambio di classe attiva.
Articolo 1
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Articolo 2
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Voce 3
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
Articolo 4
Questo è un contenuto segnaposto per la pagina scrollspy. Tieni presente che mentre scorri la pagina verso il basso, viene evidenziato il collegamento di navigazione appropriato. Viene ripetuto in tutto l'esempio del componente. Continuiamo ad aggiungere un altro esempio di copia qui per enfatizzare lo scorrimento e l'evidenziazione.
<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 data-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0" 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>
Utilizzo
Tramite attributi di dati
Per aggiungere facilmente il comportamento scrollspy alla tua navigazione nella barra in alto, aggiungi data-bs-spy="scroll"
l'elemento che vuoi spiare (di solito questo sarebbe il <body>
). Quindi aggiungi l' data-bs-target
attributo con l'ID o la classe dell'elemento padre di qualsiasi .nav
componente Bootstrap.
body {
position: relative;
}
<body data-bs-spy="scroll" data-bs-target="#navbar-example">
...
<div id="navbar-example">
<ul class="nav nav-tabs" role="tablist">
...
</ul>
</div>
...
</body>
Tramite JavaScript
Dopo aver aggiunto position: relative;
il tuo CSS, chiama scrollspy tramite JavaScript:
var scrollSpy = new bootstrap.ScrollSpy(document.body, {
target: '#navbar-example'
})
Target ID risolvibili obbligatori
I collegamenti Navbar devono avere destinazioni ID risolvibili. Ad esempio, un <a href="#home">home</a>
must corrisponde a qualcosa nel DOM come <div id="home"></div>
.
Elementi target non visibili ignorati
Gli elementi di destinazione che non sono visibili verranno ignorati e gli elementi di navigazione corrispondenti non verranno mai evidenziati.
Metodi
ricaricare
Quando usi scrollspy insieme all'aggiunta o alla rimozione di elementi dal DOM, dovrai chiamare il metodo di aggiornamento in questo modo:
var dataSpyList = [].slice.call(document.querySelectorAll('[data-bs-spy="scroll"]'))
dataSpyList.forEach(function (dataSpyEl) {
bootstrap.ScrollSpy.getInstance(dataSpyEl)
.refresh()
})
smaltire
Distrugge lo scrollspy di un elemento. (Rimuove i dati memorizzati sull'elemento DOM)
getInstance
Metodo statico che ti consente di ottenere l'istanza scrollspy associata a un elemento DOM
var scrollSpyContentEl = document.getElementById('content')
var scrollSpy = bootstrap.ScrollSpy.getInstance(scrollSpyContentEl) // Returns a Bootstrap scrollspy instance
getOrCreateInstance
Metodo statico che ti consente di ottenere l'istanza scrollspy associata a un elemento DOM o di crearne una nuova nel caso non sia stata inizializzata
var scrollSpyContentEl = document.getElementById('content')
var scrollSpy = bootstrap.ScrollSpy.getOrCreateInstance(scrollSpyContentEl) // Returns a Bootstrap scrollspy instance
Opzioni
Le opzioni possono essere passate tramite attributi di dati o JavaScript. Per gli attributi dei dati, aggiungere il nome dell'opzione a data-bs-
, come in data-bs-offset=""
.
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
offset |
numero | 10 |
Pixel da compensare dall'alto durante il calcolo della posizione di scorrimento. |
method |
corda | auto |
Trova in quale sezione si trova l'elemento spiato. auto sceglierà il metodo migliore per ottenere le coordinate di scorrimento. offset utilizzerà il Element.getBoundingClientRect() metodo per ottenere le coordinate di scorrimento. position utilizzerà le proprietà HTMLElement.offsetTop e HTMLElement.offsetLeft per ottenere le coordinate di scorrimento. |
target |
stringa | oggetto jQuery | elemento DOM | Specifica l'elemento per applicare il plug-in Scrollspy. |
Eventi
Tipo di evento | Descrizione |
---|---|
activate.bs.scrollspy |
Questo evento si attiva sull'elemento scroll ogni volta che un nuovo elemento viene attivato da scrollspy. |
var firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]')
firstScrollSpyEl.addEventListener('activate.bs.scrollspy', function () {
// do something...
})