Bootstrap - Scrollspy: Ein Anfängerleitfaden
Hallo da draußen, ambitionierte Web-Entwickler! Heute tauchen wir in eine aufregende Bootstrap-Funktion namens Scrollspy ein. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Sie durch dieses Thema Schritt für Schritt führen, genau wie ich es in den letzten Jahren für meine Schüler gemacht habe. Holen Sie sich eine Tasse Kaffee und los geht's!
Was ist Scrollspy?
Bevor wir uns den technischen Details zuwenden, lassen Sie uns verstehen, was Scrollspy ist. Stellen Sie sich vor, Sie lesen einen langen Artikel im Internet und während Sie scrollen, wird die Navigationsleiste automatisch hervorgehoben, um den Abschnitt anzuzeigen, den Sie gerade lesen. Genau das ist Scrollspy in Aktion! Es ist eine kleine, aber feine Funktion, die das Benutzererlebnis verbessert, indem sie visuelles Feedback über die aktuelle Position des Benutzers im Inhalt bietet.
Funktion
Scrollspy funktioniert, indem es die Scrollposition Ihrer Webseite überwacht und den aktiven Status Ihrer Navigationspunkte accordingly aktualisiert. Es ist, als hätten Sie einen kleinen Spion (daher der Name!), der beobachtet, wo Sie sich auf der Seite befinden und Ihrem Navigationsmenü sagt: "Hey, der Benutzer ist jetzt hier!"
Schauen wir uns ein einfaches Beispiel an:
<body data-bs-spy="scroll" data-bs-target="#navbar-example">
<div id="navbar-example">
<ul class="nav nav-tabs">
<li class="nav-item"><a class="nav-link" href="#section1">Abschnitt 1</a></li>
<li class="nav-item"><a class="nav-link" href="#section2">Abschnitt 2</a></li>
</ul>
</div>
<div data-bs-spy="scroll" data-bs-target="#navbar-example" data-bs-offset="0" tabindex="0">
<h4 id="section1">Abschnitt 1</h4>
<p>...</p>
<h4 id="section2">Abschnitt 2</h4>
<p>...</p>
</div>
</body>
In diesem Beispiel weisen wir Bootstrap an, die Scrollposition zu überwachen (data-bs-spy="scroll"
) und die Navigationsleiste in #navbar-example
zu aktualisieren. Während Sie durch den Inhalt scrollen, wird der entsprechende Navigationspunkt hervorgehoben.
Navbar
Eine der häufigsten Verwendungen von Scrollspy ist in einer Navigationsleiste. Schauen wir uns ein detaillierteres Beispiel an:
<nav id="navbar-example2" class="navbar navbar-light bg-light px-3">
<a class="navbar-brand" href="#">Navigationsleiste</a>
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link" href="#scrollspyHeading1">Erster</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#scrollspyHeading2">Zweiter</a>
</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">Erster Überschrift</h4>
<p>...</p>
<h4 id="scrollspyHeading2">Zweite Überschrift</h4>
<p>...</p>
</div>
In diesem Beispiel haben wir eine Navigationsleiste mit zwei Links. Während Sie durch den Inhalt scrollen, wird der entsprechende Navigationspunkt hervorgehoben. Es ist, als hätten Sie einen GPS für Ihre Webseite!
Geschachtelte Navigation
Manchmal möchten Sie möglicherweise geschachtelte Navigationspunkte verwenden. Scrollspy kann das auch! Hier ist, wie man das macht:
<nav id="navbar-example3" class="navbar navbar-light bg-light flex-column align-items-stretch p-3">
<a class="navbar-brand" href="#">Navigationsleiste</a>
<nav class="nav nav-pills flex-column">
<a class="nav-link" href="#item-1">Element 1</a>
<nav class="nav nav-pills flex-column">
<a class="nav-link ms-3 my-1" href="#item-1-1">Element 1-1</a>
<a class="nav-link ms-3 my-1" href="#item-1-2">Element 1-2</a>
</nav>
<a class="nav-link" href="#item-2">Element 2</a>
</nav>
</nav>
<div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-offset="0" tabindex="0">
<h4 id="item-1">Element 1</h4>
<p>...</p>
<h5 id="item-1-1">Element 1-1</h5>
<p>...</p>
<h5 id="item-1-2">Element 1-2</h5>
<p>...</p>
<h4 id="item-2">Element 2</h4>
<p>...</p>
</div>
Dies erstellt eine geschachtelte Navigationsstruktur, die sich aktualisiert, während Sie durch verschiedene Abschnitte und Unterkapitel scrollen. Es ist, als hätten Sie Kapitel und Unterkapitel in einem Buch, aber interaktiv!
Listengruppe
Scrollspy ist nicht nur auf Navigationsleisten beschränkt. Sie können es auch mit Listengruppen verwenden:
<div id="list-example" class="list-group">
<a class="list-group-item list-group-item-action" href="#list-item-1">Element 1</a>
<a class="list-group-item list-group-item-action" href="#list-item-2">Element 2</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">Element 1</h4>
<p>...</p>
<h4 id="list-item-2">Element 2</h4>
<p>...</p>
</div>
Dies erstellt eine Listengruppe, die sich aktualisiert, während Sie durch den Inhalt scrollen. Es ist, als hätten Sie ein Inhaltsverzeichnis, das genau weiß, wo Sie sich im Buch befinden!
Einfache Anker
Manchmal möchten Sie möglicherweise einfache Ankertexte anstelle einer vollständigen Navigationsleiste oder Listengruppe verwenden:
<nav id="navbar-example2" class="navbar navbar-light bg-light px-3">
<a class="navbar-brand" href="#">Navigationsleiste</a>
<ul class="nav">
<li class="nav-item">
<a class="nav-link" href="#fat">@fat</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#mdo">@mdo</a>
</li>
</ul>
</nav>
<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" tabindex="0">
<h4 id="fat">@fat</h4>
<p>...</p>
<h4 id="mdo">@mdo</h4>
<p>...</p>
</div>
Dies erstellt einfache Ankertexte, die sich aktualisieren, während Sie scrollen. Es ist, als hätten Sie Lesezeichen in Ihrer Webseite, die aufleuchten, wenn Sie sie erreichen!
Unsichtbare Elemente
Scrollspy kann sogar mit Elementen arbeiten, die initially nicht sichtbar sind:
<nav id="navbar-example2" class="navbar navbar-light bg-light px-3">
<a class="navbar-brand" href="#">Navigationsleiste</a>
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link" href="#fat">@fat</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#mdo">@mdo</a>
</li>
</ul>
</nav>
<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" tabindex="0">
<h4 id="fat">@fat</h4>
<p>...</p>
<h4 id="mdo">@mdo</h4>
<p>...</p>
<h4 id="one">one</h4>
<p>...</p>
<h4 id="two">two</h4>
<p>...</p>
<h4 id="three">three</h4>
<p>...</p>
</div>
<script>
var scrollSpy = new bootstrap.ScrollSpy(document.body, {
target: '#navbar-example2'
})
</script>
In diesem Beispiel funktioniert Scrollspy auch mit Elementen, die initially nicht sichtbar sind, wenn sie in den Blickwinkel kommen.
Verwendung
Um Scrollspy zu verwenden, müssen Sie drei Dinge tun:
- Fügen Sie
data-bs-spy="scroll"
dem Element hinzu, das Sie überwachen möchten (normalerweise das<body>
). - Fügen Sie
data-bs-target="#navId"
hinzu, um die Navigationsleiste zu spezifizieren, die für Scrollspy verwendet werden soll. - Fügen Sie
data-bs-offset=""
hinzu, um die Pixelanzahl zu spezifizieren, die von der Oberkante abgerückt werden soll, wenn die Position berechnet wird.
Hier ist eine Tabelle aller Datenattribute, die Sie verwenden können:
Attribut | Beschreibung |
---|---|
data-bs-spy | Aktiviert Scrollspy |
data-bs-target | Gibt an, welche Navigationsleiste für Scrollspy verwendet werden soll |
data-bs-offset | Pixelanzahl, die von der Oberkante abgerückt werden soll, wenn die Position berechnet wird |
data-bs-method | Findet heraus, in welchem Abschnitt sich das überwachte Element befindet |
Optionen
Sie können Scrollspy auch mit JavaScript initialisieren:
var scrollSpy = new bootstrap.ScrollSpy(document.body, {
target: '#navbar-example'
})
Hier ist eine Tabelle aller Optionen, die Sie verwenden können:
Option | Typ | Standard | Beschreibung |
---|---|---|---|
offset | number | 10 | Pixelanzahl, die von der Oberkante abgerückt werden soll, wenn die Position berechnet wird |
method | string | 'auto' | Findet heraus, in welchem Abschnitt sich das überwachte Element befindet |
target | string | '' | Gibt an, welche Navigationsleiste für Scrollspy verwendet werden soll |
CSS-Eigenschaften
Scrollspy verwendet einige CSS-Eigenschaften, um seine Magie zu vollbringen:
.scrollspy-example {
position: relative;
height: 200px;
margin-top: .5rem;
overflow: auto;
}
Die Eigenschaften position: relative
und overflow: auto
sind entscheidend für die korrekte Funktion von Scrollspy.
Und das war's! Sie sind jetzt mit dem Wissen ausgestattet, Bootstrap's Scrollspy-Funktion zu verwenden. Denken Sie daran, dass Übung den Meister macht,also experimentieren Sie ruhig mit diesen Beispielen. Viel Spaß beim Programmieren und möge Ihr Scrollen immer glatt sein!
Credits: Image by storyset