Scrollspy
Eguneratu automatikoki Bootstrap nabigazioa edo zerrenda taldeen osagaiak korritze-posizioaren arabera, une honetan bistaratzeko esteka aktibo dagoen adierazteko.
Nola dabil
Scrollspy .active
-k aingura ( <a>
) elementuen klasea aldatzen du ainguraren id
erreferentzia duen elementua href
bistaratzen denean. Scrollspy Bootstrap nav osagai edo zerrenda talde batekin batera erabiltzen da onena , baina uneko orrialdeko edozein aingura elementurekin ere funtzionatuko du. Hona hemen nola funtzionatzen duen.
-
Hasteko, scrollspy-k bi gauza behar ditu: nabigazioa, zerrenda-taldea edo esteka-multzo soil bat, gehi korritu daitekeen edukiontzi bat. Korritu daitekeen edukiontzia
<body>
edo elementu pertsonalizatua izan daiteke multzoheight
etaoverflow-y: scroll
. -
Korritu daitekeen edukiontzian, gehitu
data-bs-spy="scroll"
etadata-bs-target="#navId"
nonnavId
dagoid
lotutako nabigazio bakarra. Ziurtatu bat ere sartzen duzulatabindex="0"
teklatuaren sarbidea ziurtatzeko. -
"Espionatua" edukiontzian mugitzen zaren heinean,
.active
klase bat gehitzen da eta aingura esteketatik kentzen da lotutako nabigazioan. Estekekid
helburu konpongarriak izan behar dituzte, bestela ez dira aintzat hartuko. Adibidez,<a href="#home">home</a>
behar bat DOM bezalako zerbaiti dagokio<div id="home"></div>
-
Ikusten ez diren xede-elementuak ez ikusi egingo dira. Ikusi behean ikusten ez diren elementuak atala.
Adibideak
Nabigazio barra
Joan nabigazio-barraren azpiko eremua eta ikusi klase aktiboaren aldaketa. Ireki goitibeherako menua eta ikusi goitibeherako elementuak ere nabarmentzen direla.
Lehenengo goiburua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Bigarren goiburua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Hirugarren goiburua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Laugarren goiburua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Bosgarren goiburua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
<nav id="navbar-example2" class="navbar bg-light px-3 mb-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-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" class="scrollspy-example bg-light 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>
Nabigazio habiatua
Scrollspy habiaratuekin ere funtzionatzen du .nav
. Habiaratua .nav
bada .active
, bere gurasoak ere izango dira .active
. Joan nabigazio barraren ondoko eremua eta ikusi klase aktiboaren aldaketa.
1. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
1-1 elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
1-2 elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
2. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
3. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
3-1 elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
3-2 elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
Gogoan izan JavaScript plugina ikusgai egon daitekeen guztien artean elementu egokia hautatzen saiatzen dela. Ikusgai dauden scrollspy helburu anitzek aldi berean arazo batzuk sor ditzakete.
<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>
Zerrenda taldea
Scrollspy- .list-group
k s-rekin ere funtzionatzen du. Joan zerrenda taldearen ondoko eremua eta ikusi klase aktiboaren aldaketa.
1. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
2. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
3. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
4. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
<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>
Aingura sinpleak
Scrollspy ez da nabigazio-osagaietara eta zerrenda-taldeetara mugatzen, beraz <a>
, uneko dokumentuko edozein aingura-elementutan funtzionatuko du. Joan eremua eta ikusi .active
klase aldaketa.
1. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
2. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
3. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
4. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
5. elementua
Hau scrollspy orrirako leku-markaren edukia da. Kontuan izan orrialdean behera korritzen duzun heinean, nabigazio-esteka egokia nabarmentzen dela. Osagaiaren adibidean zehar errepikatzen da. Adibide kopia gehiago gehitzen jarraitzen dugu hemen korritzea eta nabarmentzea azpimarratzeko.
<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>
Ikusten ez diren elementuak
Ikusten ez diren xede-elementuei ez ikusi egingo zaie eta dagozkien nabigazio-elementuek ez dute .active
klaserik jasoko. Ikusgai ez den bilgarri batean hasieratutako Scrollspy instantziek xede-elementu guztiak baztertuko dituzte. Erabili refresh
metodoa elementu behagarriak dauden egiaztatzeko, bilgarria ikusgai dagoenean.
document.querySelectorAll('#nav-tab>[data-bs-toggle="tab"]').forEach(el => {
el.addEventListener('shown.bs.tab', () => {
const target = el.getAttribute('data-bs-target')
const scrollElem = document.querySelector(`${target} [data-bs-spy="scroll"]`)
bootstrap.ScrollSpy.getOrCreateInstance(scrollElem).refresh()
})
})
Erabilera
Datu-atributuen bidez
Scrollspy portaera zure goiko barrako nabigazioan erraz gehitzeko, gehitu data-bs-spy="scroll"
espioi nahi duzun elementuari (normalean hau izango litzateke <body>
). Ondoren, gehitu data-bs-target
atributua Bootstrap-eko edozein osagairen id
elementu nagusiaren edo klase-izenarekin ..nav
<body data-bs-spy="scroll" data-bs-target="#navbar-example">
...
<div id="navbar-example">
<ul class="nav nav-tabs" role="tablist">
...
</ul>
</div>
...
</body>
JavaScript bidez
const scrollSpy = new bootstrap.ScrollSpy(document.body, {
target: '#navbar-example'
})
Aukerak
Aukerak datu-atributuen edo JavaScript bidez pasa daitezkeenez, aukera-izen bat gehi diezaiokezu data-bs-
, honela data-bs-animation="{value}"
. Ziurtatu aukera-izenaren kasu-mota " camelCase "-tik " kebab-case "-ra aldatzen duzula aukerak datu-atributuen bidez pasatzen dituzunean. Adibidez, erabili data-bs-custom-class="beautifier"
ordez data-bs-customClass="beautifier"
.
Bootstrap 5.2.0-tik aurrera, osagai guztiek erreserbatutako datu-atributu esperimentaldata-bs-config
bat onartzen dute , osagaien konfigurazio sinplea JSON kate gisa gorde dezakeena. Elementu batek data-bs-config='{"delay":0, "title":123}'
eta data-bs-title="456"
atributuak dituenean, azken title
balioa izango da 456
eta bereizitako datu-atributuek gailuan emandako balioak gainidatziko dituzte data-bs-config
. Gainera, lehendik dauden datu-atributuek JSON balioak gorde ditzakete data-bs-delay='{"show":0,"hide":150}'
.
Izena | Mota | Lehenetsia | Deskribapena |
---|---|---|---|
rootMargin |
katea | 0px 0px -25% |
Intersection Observer rootMargin baliozko unitateak, korritze-posizioa kalkulatzean. |
smoothScroll |
boolearra | false |
Erabiltzaileak ScrollSpy behagarriei erreferentzia egiten dion esteka batean klik egiten duenean mugitzea ahalbidetzen du. |
target |
katea, DOM elementua | null |
Scrollspy plugina aplikatzeko elementua zehazten du. |
threshold |
array | [0.1, 0.5, 1] |
IntersectionObserver atalase baliozko sarrera, korritze-posizioa kalkulatzean. |
Zaharkitutako aukerak
5.1.3 v5.1.3 arte offset
& method
aukerak erabiltzen genituen, gaur egun zaharkituta eta ordezkatuta daudenak rootMargin
. offset
Atzerako bateragarritasuna mantentzeko, emandako bat analizatzen jarraituko dugu , baina eginbide hau v6rootMargin
-n kenduko da .
Metodoak
Metodoa | Deskribapena |
---|---|
dispose |
Elementu baten scrollspy suntsitzen du. (DOM elementuan gordetako datuak kentzen ditu) |
getInstance |
Metodo estatikoa DOM elementu batekin lotutako scrollspy instantzia lortzeko. |
getOrCreateInstance |
Metodo estatikoa DOM elementu batekin lotutako scrollspy instantzia lortzeko edo berri bat sortzeko hasieratu ez bazen. |
refresh |
DOM-eko elementuak gehitzean edo kentzean, freskatzeko metodora deitu beharko duzu. |
Hona hemen freskatze metodoa erabiliz adibide bat:
const dataSpyList = document.querySelectorAll('[data-bs-spy="scroll"]')
dataSpyList.forEach(dataSpyEl => {
bootstrap.ScrollSpy.getInstance(dataSpyEl).refresh()
})
Gertaerak
Gertaera | Deskribapena |
---|---|
activate.bs.scrollspy |
Gertaera honek korritze-elementuari eragiten dio scrollspy-k aingura bat aktibatzen duen bakoitzean. |
const firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]')
firstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => {
// do something...
})