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 gan Scrollspy ychydig o ofynion i weithredu'n iawn:
- Rhaid ei ddefnyddio ar gydran llywio Bootstrap neu grŵp rhestr .
- Scrollspy ei gwneud yn ofynnol
position: relative;
ar yr elfen yr ydych yn ysbïo ar, fel arfer y<body>
. - Mae angen angorau (
<a>
) a rhaid iddynt bwyntio at elfen gyda hynnyid
.
Pan gânt eu gweithredu'n llwyddiannus, bydd eich grŵp llywio neu restr yn diweddaru yn unol â hynny, gan symud y .active
dosbarth o un eitem i'r llall yn seiliedig ar eu targedau cysylltiedig.
Cynwysyddion sgrolio a mynediad bysellfwrdd
Os ydych chi'n gwneud cynhwysydd sgroladwy (ac eithrio'r <body>
), gwnewch yn siŵr bod gennych height
set a'i osod overflow-y: scroll;
arno - ochr yn ochr ag tabindex="0"
i sicrhau mynediad bysellfwrdd.
Enghraifft yn navbar
Sgroliwch yr ardal o dan y bar llywio a gwyliwch y newid dosbarth gweithredol. Bydd yr eitemau cwymplen yn cael eu hamlygu hefyd.
Pennawd cyntaf
Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 navbar-light bg-light px-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-offset="0" class="scrollspy-example" 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>
Enghraifft gyda llywio nythu
Scrollspy hefyd yn gweithio gyda nythol .nav
s. .nav
Os 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 1-1
Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 1-2
Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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-1
Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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-2
Dyma rywfaint o gynnwys dalfan ar gyfer y dudalen sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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-example3" class="navbar navbar-light bg-light flex-column align-items-stretch p-3">
<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 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 data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-offset="0" tabindex="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>
Enghraifft gyda rhestr-grŵp
Scrollspy hefyd yn gweithio gyda .list-group
s. 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 sgroliwr. Sylwch, wrth i chi sgrolio i lawr y dudalen, fod 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 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-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0" 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>
Defnydd
Trwy briodoleddau data
Er mwyn ychwanegu ymddygiad ysbïo 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-target
priodoledd gyda'r ID neu ddosbarth y rhiant elfen o unrhyw .nav
gydran Bootstrap.
body {
position: relative;
}
<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
Ar ôl ychwanegu position: relative;
eich CSS i mewn, ffoniwch y scrollspy trwy JavaScript:
var scrollSpy = new bootstrap.ScrollSpy(document.body, {
target: '#navbar-example'
})
Angen targedau ID y gellir eu datrys
Rhaid i ddolenni Navbar gael targedau adnabod y gellir eu datrys. Er enghraifft, <a href="#home">home</a>
rhaid cyfateb i rywbeth yn y DOM fel <div id="home"></div>
.
Elfennau targed anweladwy wedi'u hanwybyddu
Bydd elfennau targed nad ydynt yn weladwy yn cael eu hanwybyddu ac ni fydd eu heitemau llywio cyfatebol byth yn cael eu hamlygu.
Dulliau
adfywio
Wrth ddefnyddio scrollspy ar y cyd ag ychwanegu neu dynnu elfennau o'r DOM, bydd angen i chi ffonio'r dull adnewyddu fel hyn:
var dataSpyList = [].slice.call(document.querySelectorAll('[data-bs-spy="scroll"]'))
dataSpyList.forEach(function (dataSpyEl) {
bootstrap.ScrollSpy.getInstance(dataSpyEl)
.refresh()
})
gwared
Yn dinistrio sgrôlsbïwr elfen. (Yn dileu data sydd wedi'i storio ar yr elfen DOM)
caelInstance
Dull statig sy'n eich galluogi i gael yr enghraifft sgroliwr sy'n gysylltiedig ag elfen DOM
var scrollSpyContentEl = document.getElementById('content')
var scrollSpy = bootstrap.ScrollSpy.getInstance(scrollSpyContentEl) // Returns a Bootstrap scrollspy instance
getOrCreateInstance
Dull statig sy'n eich galluogi i gael yr enghraifft sgroliwr sy'n gysylltiedig ag elfen DOM, neu greu un newydd rhag ofn na chafodd ei gychwyn
var scrollSpyContentEl = document.getElementById('content')
var scrollSpy = bootstrap.ScrollSpy.getOrCreateInstance(scrollSpyContentEl) // Returns a Bootstrap scrollspy instance
Opsiynau
Gellir trosglwyddo opsiynau trwy briodoleddau data neu JavaScript. Ar gyfer priodoleddau data, atodwch enw'r opsiwn i data-bs-
, fel yn data-bs-offset=""
.
Enw | Math | Diofyn | Disgrifiad |
---|---|---|---|
offset |
rhif | 10 |
Picseli i'w gwrthbwyso o'r brig wrth gyfrifo safle'r sgrôl. |
method |
llinyn | auto |
Yn darganfod ym mha adran mae'r elfen ysbïedig. auto Bydd yn dewis y dull gorau o gael cyfesurynnau sgrolio. offset yn defnyddio'r Element.getBoundingClientRect() dull i gael cyfesurynnau sgrolio. position yn defnyddio'r HTMLElement.offsetTop a HTMLElement.offsetLeft phriodweddau i gael cyfesurynnau sgrolio. |
target |
llinyn | jQuery gwrthrych | elfen DOM | Yn pennu elfen i wneud cais Scrollspy plugin. |
Digwyddiadau
Math o ddigwyddiad | Disgrifiad |
---|---|
activate.bs.scrollspy |
Mae'r digwyddiad hwn yn tanio'r elfen sgrolio pryd bynnag y bydd eitem newydd yn cael ei actifadu gan y sgrôlspy. |
var firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]')
firstScrollSpyEl.addEventListener('activate.bs.scrollspy', function () {
// do something...
})