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:
- Se stai creando il nostro JavaScript dal sorgente, richiede
util.js
. - 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>
. - Quando spii elementi diversi da
<body>
, assicurati di avere unheight
set eoverflow-y: scroll;
applicato. - 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.
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.
@Grasso
Contenuto segnaposto per l'esempio di scrollspy. Hai la migliore architettura. Timbri sui passaporti, è cosmopolita. Bene, fresco, feroce, ce l'abbiamo fatta. Non avevo mai pianificato che un giorno ti avrei perso. Ti mangia il cuore. Il tuo bacio è cosmico, ogni mossa è magica. Intendo quelli, voglio dire come se fosse lei. Saluti cari facciamo un viaggio. Basta possedere la notte come il 4 luglio! Ma preferiresti perderti.
@mdo
Contenuto segnaposto per l'esempio di scrollspy. Perché lei è la musa e l'artista. (Questo è il modo in cui lo facciamo) Quindi vuoi giocare con la magia. Quindi assicurati solo prima di darmi tutto. Sto camminando, sto camminando nell'aria (stasera). Salta il discorso, sentito tutto, è ora di camminare.
uno
Placeholder content for the scrollspy example. Takes you miles high, so high, 'cause she’s got that one international smile. There's a stranger in my bed, there's a pounding in my head. Oh, no. In another life I would make you stay. ‘Cause I, I’m capable of anything. Suiting up for my crowning battle. Used to steal your parents' liquor and climb to the roof. Tone, tan fit and ready, turn it up cause its gettin' heavy. Her love is like a drug. I guess that I forgot I had a choice.
two
Placeholder content for the scrollspy example. It's time to bring out the big balloons. I'm walking, I'm walking on air (tonight). Yeah, we maxed our credit cards and got kicked out of the bar. Yo, shout out to all you kids, buying bottle service, with your rent money. I'm ma get your heart racing in my skin-tight jeans. If you get the chance you better keep her. Yo, shout out to all you kids, buying bottle service, with your rent money.
three
Contenuto segnaposto per l'esempio di scrollspy. Se vuoi ballare, se vuoi tutto, sai che sono la ragazza che dovresti chiamare. Camminerei attraverso la tempesta lo farei. Quindi lascia che ti porti il tuo vestito di compleanno. Quello che è scappato. Lo scorso venerdì sera, sì, penso che abbiamo infranto la legge, diciamo sempre che ci fermeremo. Perché lei è un po' Yoko, ed è un po' 'Oh no'. Voglio che la mascella cada, gli occhi che si spalancano, la testa che giri, il corpo scioccante. Sì, abbiamo esaurito le nostre carte di credito e siamo stati cacciati dal bar.
E qualche altro contenuto segnaposto, per buona misura.
<nav id="navbar-example2" class="navbar navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link" href="#fat">@fat</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#mdo">@mdo</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#one">one</a>
<a class="dropdown-item" href="#two">two</a>
<div role="separator" class="dropdown-divider"></div>
<a class="dropdown-item" href="#three">three</a>
</div>
</li>
</ul>
</nav>
<div data-spy="scroll" data-target="#navbar-example2" data-offset="0">
<h4 id="fat">@fat</h4>
<p>...</p>
<h4 id="mdo">@mdo</h4>
<p>...</p>
<h4 id="one">one</h4>
<p>...</p>
<h4 id="two">two</h4>
<p>...</p>
<h4 id="three">three</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
Contenuto segnaposto per l'esempio di scrollspy. Questo si riferisce all'elemento 1. Ti porta miglia in alto, così in alto, perché ha quel sorriso internazionale. C'è un estraneo nel mio letto, c'è un martellante nella mia testa. Oh no. In un'altra vita ti farei restare. Perché io, io sono capace di tutto. Preparandomi per la mia battaglia finale. Usato per rubare il liquore dei tuoi genitori e salire sul tetto. Tonifica, abbronzati e pronti, alzalo perché sta diventando pesante. Il suo amore è come una droga. Immagino di aver dimenticato di avere una scelta.
Voce 1-1
Contenuto segnaposto per l'esempio di scrollspy. Questo si riferisce all'articolo 1-1. Hai la migliore architettura. Timbri sui passaporti, è cosmopolita. Bene, fresco, feroce, ce l'abbiamo fatta. Non avevo mai pianificato che un giorno ti avrei perso. Ti mangia il cuore. Il tuo bacio è cosmico, ogni mossa è magica. Intendo quelli, voglio dire come se fosse lei. Saluti cari facciamo un viaggio. Basta possedere la notte come il 4 luglio! Ma preferiresti perderti.
Voce 1-2
Placeholder content for the scrollspy example. This one relates to the item 1-2. Her love is like a drug. All my girls vintage Chanel baby. Got a motel and built a fort out of sheets. 'Cause she's the muse and the artist. (This is how we do) So you wanna play with magic. So just be sure before you give it all to me. I'm walking, I'm walking on air (tonight). Skip the talk, heard it all, time to walk the walk. Catch her if you can. Stinging like a bee I earned my stripes.
Item 2
Placeholder content for the scrollspy example. This one relates to item 2. Don't need apologies. There is no fear now, let go and just be free, I will love you unconditionally. Last Friday night. Don't be a shy kinda guy I'll bet it's beautiful. Summer after high school when we first met. 'Cause she's the muse and the artist. What? Wait. No, no, no, no. Thought that I was the exception.
Item 3
Placeholder content for the scrollspy example. This one relates to item 3. Word on the street, you got somethin' to show me, me. All this money can't buy me a time machine. Make it like your birthday everyday. So we hit the boulevard. You make me feel like I'm livin' a teenage dream, the way you turn me on Skip the talk, heard it all, time to walk the walk. Word on the street, you got somethin' to show me, me. It's no big deal, it's no big deal, it's no big deal.
Item 3-1
Placeholder content for the scrollspy example. This one relates to item 3-1. Baby do you dare to do this? This is no big deal. Yeah, you're lucky if you're on her plane. Just own the night like the 4th of July! Standing on the frontline when the bombs start to fall. So just be sure before you give it all to me.
Item 3-2
Contenuto segnaposto per l'esempio di scrollspy. Questo si riferisce al punto 3-2. Sei originale, non può essere sostituito. Per tutta la notte stanno suonando, la tua canzone. Ragazze californiane siamo innegabili. Come un uccello senza gabbia. Non c'è paura ora, lasciati andare e sii libero, ti amerò incondizionatamente. Vedo la scritta sul muro. Potresti viaggiare per il mondo ma niente si avvicina alla costa dorata.
<nav id="navbar-example3" class="navbar navbar-light bg-light">
<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 ml-3 my-1" href="#item-1-1">Item 1-1</a>
<a class="nav-link ml-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 ml-3 my-1" href="#item-3-1">Item 3-1</a>
<a class="nav-link ml-3 my-1" href="#item-3-2">Item 3-2</a>
</nav>
</nav>
</nav>
<div data-spy="scroll" data-target="#navbar-example3" data-offset="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
Contenuto segnaposto per l'esempio del gruppo elenco scrollspy. Questo si riferisce al punto 1. Non ho bisogno di scuse. Non c'è paura ora, lasciati andare e sii libero, ti amerò incondizionatamente. Lo scorso venerdì sera. Non essere un tipo timido, scommetto che è bellissimo. L'estate dopo il liceo quando ci siamo incontrati per la prima volta. Perché lei è la musa e l'artista. Che cosa? Attesa. Pensavo di essere l'eccezione.
Articolo 2
Contenuto segnaposto per l'esempio del gruppo elenco scrollspy. Questo si riferisce all'elemento 2. Sì, balla al suo ritmo. Oh no. Saresti potuto essere il migliore. Perché, piccola, sei un fuoco d'artificio. Forse un motivo per cui tutte le porte sono chiuse. Apri il tuo cuore e lascia che inizi. Così très chic, sì, è un classico.
Voce 3
Contenuto segnaposto per l'esempio del gruppo elenco scrollspy. Questo si riferisce al punto 3. Andiamo sempre più in alto. Mai uno senza l'altro, abbiamo fatto un patto. Sto camminando nell'aria. Qualcuno ha detto che ti sei fatto rimuovere il tatuaggio. Ora sto fluttuando come una farfalla. Tonifica, abbronzati e pronti, alzalo perché sta diventando pesante. Perché una volta che sei mio, una volta che sei mio Devi solo accendere la luce e lasciarla brillare! Quindi abbiamo raggiunto il viale. Ti senti mai, ti senti così sottile come la carta. Vedo tutto, lo vedo ora.
Articolo 4
Contenuto segnaposto per l'esempio del gruppo elenco scrollspy. Questo si riferisce al punto 4. Estate dopo il liceo, quando ci siamo incontrati per la prima volta. Non c'è paura ora, lasciati andare e sii libero, ti amerò incondizionatamente. Pelle baciata dal sole così calda che ti scioglieremo il ghiacciolo. Questo amore ti farà levitare.
<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-spy="scroll" data-target="#list-example" data-offset="0" class="scrollspy-example">
<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-spy="scroll"
l'elemento che vuoi spiare (di solito questo sarebbe il <body>
). Quindi aggiungi l' data-target
attributo con l'ID o la classe dell'elemento padre di qualsiasi .nav
componente Bootstrap.
body {
position: relative;
}
<body data-spy="scroll" data-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:
$('body').scrollspy({ 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 non :visible
target ignorati
Gli elementi di destinazione che non sono :visible
conformi a jQuery verranno ignorati e i relativi elementi di navigazione non verranno mai evidenziati.
Metodi
.scrollspy('refresh')
Quando usi scrollspy insieme all'aggiunta o alla rimozione di elementi dal DOM, dovrai chiamare il metodo di aggiornamento in questo modo:
$('[data-spy="scroll"]').each(function () {
var $spy = $(this).scrollspy('refresh')
})
.scrollspy('dispose')
Distrugge lo scrollspy di un elemento.
Opzioni
Le opzioni possono essere passate tramite attributi di dati o JavaScript. Per gli attributi dei dati, aggiungere il nome dell'opzione a data-
, come in data-offset=""
.
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
compensare | numero | 10 | Pixel da compensare dall'alto durante il calcolo della posizione di scorrimento. |
metodo | 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 metodo offset jQuery per ottenere le coordinate di scorrimento. position utilizzerà il metodo di posizione jQuery per ottenere le coordinate di scorrimento. |
obbiettivo | stringa | oggetto jQuery | elemento DOM | Specifica l'elemento per applicare il plug-in Scrollspy. |
Eventi
Tipo di evento | Descrizione |
---|---|
attivare.bs.scrollspy | Questo evento si attiva sull'elemento scroll ogni volta che un nuovo elemento viene attivato da scrollspy. |
$('[data-spy="scroll"]').on('activate.bs.scrollspy', function () {
// do something...
})