Saltatu eduki nagusira Saltatu dokumentuen nabigaziora
Check
in English

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 iderreferentzia duen elementua hrefbistaratzen 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 multzo heighteta overflow-y: scroll.

  • Korritu daitekeen edukiontzian, gehitu data-bs-spy="scroll"eta data-bs-target="#navId"non navIddago idlotutako nabigazio bakarra. Ziurtatu bat ere sartzen duzula tabindex="0"teklatuaren sarbidea ziurtatzeko.

  • "Espionatua" edukiontzian mugitzen zaren heinean, .activeklase bat gehitzen da eta aingura esteketatik kentzen da lotutako nabigazioan. Estekek idhelburu 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

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 .navbada .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-groupk 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 .activeklase 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 .activeklaserik jasoko. Ikusgai ez den bilgarri batean hasieratutako Scrollspy instantziek xede-elementu guztiak baztertuko dituzte. Erabili refreshmetodoa 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-targetatributua Bootstrap-eko edozein osagairen idelementu 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 titlebalioa izango da 456eta 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& methodaukerak erabiltzen genituen, gaur egun zaharkituta eta ordezkatuta daudenak rootMargin. offsetAtzerako 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...
})