Biçe ser naveroka sereke Biçe navîgasyon belgeyan
Check
in English

Scrollspy

Navîgasyona Bootstrap-ê bixweber nûve bikin an jî pêkhateyên komê li gorî pozîsyona gerokê navnîş bikin da ku destnîşan bikin ka kîjan girêdan niha di dîmenderê de çalak e.

Çawa dixebite

Scrollspy .activeçîna li ser <a>hêmanên ankerê ( ) diguherîne dema ku hêmana ku idji hêla lengerê ve hatî referanskirin li hrefber çavan tê gerandin. Scrollspy çêtirîn bi pêwendiyek bi hêmanek navokê ya Bootstrap an koma navnîşê re tê bikar anîn , lê ew ê di rûpela heyî de bi her hêmanên ankerê re jî bixebite . Li vir çawa dixebite.

  • Ji bo destpêkirinê, scrollspy du tiştan hewce dike: navîgasyon, komek navnîş, an komek hêsan a lînkan, plus konteynirek gerok. Konteynirê scrollable dikare bibe <body>an hêmanek xwerû ya bi set heightû overflow-y: scroll.

  • Li ser konteynirê ya gerok, lê zêde bike data-bs-spy="scroll"û data-bs-target="#navId"li ku navIdye yekta idnavîgasyona têkildar. Bawer bikin ku di heman demê de ji tabindex="0"bo ku gihîştina klavyeyê piştrast bikin.

  • Gava ku hûn konteynera "sîxurî" digerînin, .activeçînek ji girêdanên lengerê di nav navîgasyona têkildar de tê zêdekirin û jêbirin. Pêdivî ye ku girêdan xwedî idarmancên çareserker bin, wekî din ew têne paşguh kirin. Mînakî, <a href="#home">home</a>pêdivî ye ku bi tiştek di DOM-ê de mîna hev re têkildar be<div id="home"></div>

  • Hêmanên armanc ên ku nayên dîtin dê bêne paşguh kirin. Binêre beşa hêmanên ne-xuya li jêr.

Examples

Li qada li jêr navbarê bigerin û li guhertina çîna çalak temaşe bikin. Menuya dakêşanê vekin û temaşe bikin ku hêmanên dakêşanê jî têne ronî kirin.

Sernavê yekem

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Sernavê duyemîn

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Sernavê sêyemîn

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Sernavê çaremîn

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Sernavê pêncemîn

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

<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>

Nav hêlîn

Scrollspy jî bi .navs hêlînên dixebite. Heger hêlînek .navbe .activedê û bavê wî jî bibin .active. Li qada li kêleka navbarê bigerin û li guhertina çîna çalak temaşe bikin.

Babetê 1

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

Babetê 1-1

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

Babetê 1-2

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

Babetê 2

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

Babetê 3

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

Babetê 3-1

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

Babetê 3-2

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Bînin bîra xwe ku pêveka JavaScript hewl dide ku di nav her tiştê ku xuya dibe de hêmana rast hilbijêre. Di heman demê de gelek armancên scrollspy xuya dibe ku dibe sedema hin pirsgirêkan.

<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>

Lîsteya koma

Scrollspy jî bi .list-groups dixebite. Li qada li kêleka koma navnîşê bigerin û li guhertina çîna çalak temaşe bikin.

Babetê 1

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 2

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 3

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 4

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

<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>

Ankerên hêsan

Scrollspy bi hêmanên nav û komên navnîşê ve ne sînorkirî ye, ji ber vê yekê ew ê li ser her <a>hêmanên ankerê yên di belgeya heyî de bixebite. Li herêmê bigerin û li .activeguherîna polê temaşe bikin.

Babetê 1

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 2

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 3

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 4

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

Babetê 5

Ev ji bo rûpela scrollspy hin naverokek cîhgir e. Bala xwe bidinê ku gava hûn rûpelê dakêşin, zencîreya navîgasyonê ya guncan tê ronî kirin. Ew li seranserê nimûneya pêkhatê tê dubare kirin. Em li vir kopiyek mînakek din lê zêde dikin da ku balê bikişîne ser gerok û ronîkirinê.

<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>

hêmanên ne-dîtbar

.activeHêmanên mebest ên ku ne diyar in dê werin paşguh kirin û tiştên navika wan ên têkildar dê çînek nestînin . Mînakên Scrollspy yên ku di pêçekek ne-xuyarî de hatine destpêkirin dê hemî hêmanên armancê paşguh bike. Methodê bikar bînin refreshku hûn hêmanên çavdêriyê kontrol bikin gava ku pêça xuya dibe.

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()
  })
})

Bikaranîna

Bi taybetmendiyên daneyê

Ji bo ku bi hêsanî behreya scrollspy li navîgasyona xweya jorîn zêde data-bs-spy="scroll"bikin, li hêmana ku hûn dixwazin bişopînin lê zêde bikin (bi gelemperî ev dê bibe <body>). Dûv re data-bs-targettaybetmendiyê bi nav idan pola hêmana dêûbavê ya her .navpêkhateyek Bootstrap ve zêde bikin.

<body data-bs-spy="scroll" data-bs-target="#navbar-example">
  ...
  <div id="navbar-example">
    <ul class="nav nav-tabs" role="tablist">
      ...
    </ul>
  </div>
  ...
</body>

Bi JavaScript

const scrollSpy = new bootstrap.ScrollSpy(document.body, {
  target: '#navbar-example'
})

Vebijêrk

Ji ber ku vebijark dikarin bi taybetmendiyên daneyan an JavaScriptê ve werin derbas kirin, hûn dikarin navek vebijarkê lê zêde bikin data-bs-, wekî di data-bs-animation="{value}". Dema ku vebijarkan bi taybetmendiyên daneyê re derbas bikin, pê ewle bin ku hûn celebê doza navê vebijarkê ji " camelCase " veguherînin " kebab-case ". Mînakî, data-bs-custom-class="beautifier"li şûna bikar bînin data-bs-customClass="beautifier".

Ji Bootstrap 5.2.0-ê, hemî pêkhate taybetmendiyek daneya veqetandî ya ceribandinêdata-bs-config piştgirî dikin ku dikare veavakirina hêmanek hêsan wekî rêzek JSON bihewîne. Dema ku hêmanek hebe data-bs-config='{"delay":0, "title":123}'û data-bs-title="456"taybetmendî hebe, nirxa paşîn titledê bibe 456û taybetmendiyên daneya veqetandî dê nirxên ku li ser hatine dayîn derbas bikin data-bs-config. Digel vê yekê, taybetmendiyên daneya heyî dikarin nirxên JSON ên mîna data-bs-delay='{"show":0,"hide":150}'.

Nav Awa Destçûnî Terîf
rootMargin ben 0px 0px -25% Yekîneyên derbasdar RootMargin Çavdêrê Intersection , dema ku pozîsyona gerîdeyê tê hesibandin.
smoothScroll boolean false Dema ku bikarhênerek li ser zencîreyek ku ji çavdêriyên ScrollSpy re vedibêje bikirtîne gerîdeya nerm çalak dike.
target string, hêmana DOM null Hêmanek diyar dike ku pêveka Scrollspy bicîh bîne.
threshold rêzî [0.1, 0.5, 1] IntersectionObserver ketina derbasdar a sînor , dema ku pozîsyona gerokê tê hesibandin.

Vebijêrkên Deprecated

Heya v5.1.3, me offset& methodvebijark bikar dianîn, ku nuha hatine paşguh kirin û bi rootMargin. Ji bo ku lihevhatina paşverû bihêlin, em ê parskirina danasînê bidomînin , lê ev taybetmendî dê di v6offset de were rakirin .rootMargin

Methods

Awa Terîf
dispose Scrollspy ya hêmanek hilweşîne. (Daneyên hilanîn ên li ser hêmana DOM-ê radike)
getInstance Rêbaza statîk ji bo bidestxistina mînaka scrollspy ya ku bi hêmanek DOM-ê ve girêdayî ye.
getOrCreateInstance Rêbaza statîk ji bo bidestxistina mînaka scrollspy-ê ya ku bi hêmanek DOM-ê ve girêdayî ye, an jî ji bo afirandina yek nû heke ew nehatibe destpêkirin.
refresh Dema ku hêmanên li DOM-ê zêde bikin an jêbirin, hûn ê hewce bikin ku rêbaza nûvekirinê bang bikin.

Li vir mînakek bi karanîna rêbaza nûvekirinê heye:

const dataSpyList = document.querySelectorAll('[data-bs-spy="scroll"]')
dataSpyList.forEach(dataSpyEl => {
  bootstrap.ScrollSpy.getInstance(dataSpyEl).refresh()
})

Events

Bûyer Terîf
activate.bs.scrollspy Dema ku lengerek ji hêla scrollspy ve tê çalak kirin ev bûyer li ser hêmana gerokê dişewite.
const firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]')
firstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => {
  // do something...
})