Neidio i'r prif gynnwys Neidio i lywio dogfennau
Check
in English

Sgrolspy

Diweddaru llywio Bootstrap yn awtomatig neu restru cydrannau grŵp yn seiliedig ar safle sgrolio i nodi pa ddolen sy'n weithredol yn y porth gwylio ar hyn o bryd.

Sut mae'n gweithio

Mae Scrollspy yn toglo'r .activedosbarth ar elfennau angor ( <a>) pan fydd yr elfen â'r idcyfeiriad y mae'r angor yn cyfeirio ati yn hrefcael ei sgrolio i'r golwg. Mae'n well defnyddio Scrollspy ar y cyd â chydran Bootstrap nav neu grŵp rhestr , ond bydd hefyd yn gweithio gydag unrhyw elfennau angor yn y dudalen gyfredol. Dyma sut mae'n gweithio.

  • I ddechrau, mae angen dau beth ar scrollspy: llywio, grŵp rhestr, neu set syml o ddolenni, ynghyd â chynhwysydd y gellir ei sgrolio. Gall y cynhwysydd sgroladwy fod <body>yn elfen wedi'i haddasu gyda set heighta overflow-y: scroll.

  • Ar y cynhwysydd sgroladwy, ychwanegwch data-bs-spy="scroll"a data-bs-target="#navId"ble navIdmae unigryw'r idllywio cysylltiedig. Byddwch yn siwr i gynnwys hefyd tabindex="0"i sicrhau mynediad bysellfwrdd.

  • Wrth i chi sgrolio'r cynhwysydd “spied”, mae .activedosbarth yn cael ei ychwanegu a'i ddileu o ddolenni angori yn y llywio cysylltiedig. Rhaid i gysylltiadau fod â idthargedau y gellir eu datrys, neu cânt eu hanwybyddu. Er enghraifft, <a href="#home">home</a>rhaid cyfateb i rywbeth tebyg i DOM<div id="home"></div>

  • Bydd elfennau targed nad ydynt yn weladwy yn cael eu hanwybyddu. Gweler yr adran Elfennau anweledig isod.

Enghreifftiau

Sgroliwch yr ardal o dan y bar llywio a gwyliwch y newid dosbarth gweithredol. Agorwch y gwymplen a gwyliwch yr eitemau cwymplen yn cael eu hamlygu hefyd.

Pennawd cyntaf

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Ail bennawd

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Trydydd pennawd

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Pedwerydd pennawd

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Pumed pennawd

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

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

Scrollspy hefyd yn gweithio gyda nythol .navs. .navOs yw nyth .active, bydd ei rieni hefyd .active. Sgroliwch yr ardal nesaf at y bar llywio a gwyliwch y newid dosbarth gweithredol.

Eitem 1

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

Eitem 1-1

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

Eitem 1-2

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

Eitem 2

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

Eitem 3

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

Eitem 3-1

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

Eitem 3-2

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Cofiwch fod yr ategyn JavaScript yn ceisio dewis yr elfen gywir ymhlith popeth a allai fod yn weladwy. Gall targedau sgrôlspy gweladwy lluosog ar yr un pryd achosi rhai problemau.

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

Rhestr grŵp

Scrollspy hefyd yn gweithio gyda .list-groups. Sgroliwch yr ardal nesaf at y grŵp rhestr a gwyliwch y newid dosbarth gweithredol.

Eitem 1

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 2

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 3

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 4

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

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

Angorau syml

Nid yw Scrollspy yn gyfyngedig i gydrannau nav a grwpiau rhestr, felly bydd yn gweithio ar unrhyw <a>elfennau angor yn y ddogfen gyfredol. Sgroliwch yr ardal a gwyliwch y .activedosbarth yn newid.

Eitem 1

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 2

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 3

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 4

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

Eitem 5

Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sbïo sgrôl. Sylwch, wrth i chi sgrolio i lawr y dudalen, bod y cyswllt llywio priodol wedi'i amlygu. Mae'n cael ei ailadrodd trwy gydol yr enghraifft gydran. Rydyn ni'n parhau i ychwanegu mwy o gopi enghreifftiol yma i bwysleisio'r sgrolio a'r amlygu.

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

Elfennau anweledig

Bydd elfennau targed nad ydynt yn weladwy yn cael eu hanwybyddu ac ni fydd eu heitemau llywio cyfatebol yn derbyn .activedosbarth. Bydd achosion Scrollspy a ddechreuwyd mewn deunydd lapio anweledig yn anwybyddu'r holl elfennau targed. Defnyddiwch y refreshdull i wirio am elfennau gweladwy unwaith y bydd y papur lapio yn dod yn weladwy.

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

Defnydd

Trwy briodoleddau data

Er mwyn ychwanegu ymddygiad ysbïwr sgrolio at eich llywio bar uchaf yn hawdd, ychwanegwch data-bs-spy="scroll"at yr elfen rydych chi am sbïo arno (yn fwyaf nodweddiadol dyma fyddai'r <body>). Yna ychwanegwch y data-bs-targetpriodoledd gydag idenw neu ddosbarth y rhiant elfen o unrhyw .navgydran Bootstrap.

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

Trwy JavaScript

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

Opsiynau

Gan y gellir trosglwyddo opsiynau trwy briodoleddau data neu JavaScript, gallwch atodi enw opsiwn i data-bs-, fel yn data-bs-animation="{value}". Gwnewch yn siŵr eich bod yn newid math achos yr enw opsiwn o “ camelCase ” i “ kebab-case ” wrth basio'r opsiynau trwy briodoleddau data. Er enghraifft, defnyddiwch data-bs-custom-class="beautifier"yn lle data-bs-customClass="beautifier".

O Bootstrap 5.2.0, mae'r holl gydrannau'n cefnogi priodoledd data neilltuedig arbrofoldata-bs-config a all gynnwys cyfluniad cydran syml fel llinyn JSON. Pan fydd gan elfen data-bs-config='{"delay":0, "title":123}'a data-bs-title="456"phriodoleddau, y gwerth terfynol titlefydd 456a bydd y priodoleddau data ar wahân yn diystyru'r gwerthoedd a roddir ar data-bs-config. Yn ogystal, mae priodoleddau data presennol yn gallu cynnwys gwerthoedd JSON fel data-bs-delay='{"show":0,"hide":150}'.

Enw Math Diofyn Disgrifiad
rootMargin llinyn 0px 0px -25% Intersection Observer rootMargin unedau dilys, wrth gyfrifo safle sgrolio.
smoothScroll boolaidd false Yn galluogi sgrolio llyfn pan fydd defnyddiwr yn clicio ar ddolen sy'n cyfeirio at bethau arsylladwy ScrollSpy.
target llinyn, elfen DOM null Yn pennu elfen i wneud cais Scrollspy plugin.
threshold arae [0.1, 0.5, 1] IntersectionObserver mewnbwn dilys trothwy , wrth gyfrifo safle sgrolio.

Dewisiadau Anghymeradwy

Hyd at v5.1.3 roeddem yn defnyddio offsetac methodopsiynau, sydd bellach yn anghymeradwy ac yn cael eu disodli gan rootMargin. Er mwyn cadw cydnawsedd tuag yn ôl, byddwn yn parhau i ddosrannu a roddwyd offseti rootMargin, ond bydd y nodwedd hon yn cael ei dileu yn v6 .

Dulliau

Dull Disgrifiad
dispose Yn dinistrio sgrôlsbïwr elfen. (Yn dileu data sydd wedi'i storio ar yr elfen DOM)
getInstance Dull statig i gael yr enghraifft sgroliwr sy'n gysylltiedig ag elfen DOM.
getOrCreateInstance Dull statig i gael yr enghraifft scrollspy yn gysylltiedig ag elfen DOM, neu i greu un newydd rhag ofn na chafodd ei gychwyn.
refresh Wrth ychwanegu neu ddileu elfennau yn y DOM, bydd angen i chi ffonio'r dull adnewyddu.

Dyma enghraifft gan ddefnyddio'r dull adnewyddu:

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

Digwyddiadau

Digwyddiad Disgrifiad
activate.bs.scrollspy Mae'r digwyddiad hwn yn tanio ar yr elfen sgrolio pryd bynnag y bydd angor yn cael ei actifadu gan y sgroliwr.
const firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]')
firstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => {
  // do something...
})