Zum Hauptinhalt springen

Wie funktioniert Position sticky - eine vollständige Anleitung

Position: sticky ist eine CSS-Eigenschaft, mit der ein Element beim Scrollen an einer bestimmten Position auf der Seite "haften" kann. Dies ist eine sehr nützliche Eigenschaft, mit der Sie Navigationsleisten, Seitenmenüs oder andere Schnittstellenelemente erstellen können, die auch beim Scrollen durch den Inhalt der Seite sichtbar bleiben sollten.

Wenn wir den Wert "sticky" für die Position-Eigenschaft verwenden, verhält sich das Element wie ein "normales" Element, wenn kein Bildlauf durchgeführt wird. Wenn die Seite jedoch zu scrollen beginnt und das Element eine bestimmte Position erreicht, "haftet" es am Bildschirm und bleibt an seinem Platz, während die Seite weiter scrollt.

Position: sticky hat drei Hauptzustände: "static" (Standard), "relative" und "fixed". Wenn wir den Wert "sticky" für die Eigenschaft position festlegen, wird das Element zunächst als "static" positioniert und wird dann zu "fixed", wenn es seine "klebende" Position erreicht. Dadurch bleibt das Element sichtbar und bestimmt schematisch sein Bildlaufverhalten.

Bestimmung der Sticky-Position

Die Sticky-Position ist eine Kombination von Eigenschaften relative und fixed. Im Gegensatz zur Eigenschaft relative Dadurch kann sich das Element relativ zu seiner ursprünglichen Position und den Eigenschaften verschieben fixed Die Sticky-Position, die das Element unabhängig vom Bildlauf an das Browserfenster anhängt, ermöglicht es dem Element, sich mit dem Bildlauf zu bewegen, aber an einer bestimmten Position zu "haften".

Um die Sticky-Position zu bestimmen, müssen Sie die Eigenschaft festlegen position mit Wert sticky auf dem Element, das geklebt werden soll. Anschließend müssen Sie eine der Eigenschaften angeben top, bottom, left oder right, um anzugeben, an welche Grenze des Containers oder Browserfensters das Element geklebt werden soll.

Element mit Eigenschaft position: sticky wird an eine bestimmte Position geklebt, wenn die Ausgangsposition durch Scrollen unsichtbar wird. Es verbleibt an dieser Position, bis der gesamte Inhalt des Containers oder Browserfensters erneut gescrollt wird.

Wie es funktioniert

Die Eigenschaft position sticky funktioniert basierend auf einer Kombination aus den Eigenschaften position und top, right, bottom oder left. Wenn ein Element auf sticky festgelegt ist, haftet es am nächsten übergeordneten Element, das die angegebene Position hat (nicht static). Wenn es kein solches übergeordnetes Element gibt, bleibt das Element am Rand des Ansichtsfensters haften.

Neben den grundlegenden Eigenschaften unterstützt position sticky auch zusätzliche Eigenschaften, z. B. z-index, um die Anzeigereihenfolge von Elementen auf einer Seite zu steuern, und background-color, um die Hintergrundfarbe im anhaftenden Zustand festzulegen.

Es sollte jedoch beachtet werden, dass die Unterstützung für die Position sticky-Eigenschaft in verschiedenen Browsern unterschiedlich sein kann. Daher wird empfohlen, den Code in verschiedenen Umgebungen zu testen und alternative Lösungen für Situationen bereitzustellen, in denen die Unterstützung für position sticky eingeschränkt ist oder nicht vorhanden ist.

Unterstützung durch Browser

Die Eigenschaft position: sticky wird von allen modernen Browsern unterstützt, einschließlich Chrome, Firefox, Safari, Opera und Microsoft Edge. Es ist jedoch eine Überlegung wert, dass sich verschiedene Browser im Umgang mit dieser Eigenschaft geringfügig unterscheiden können.

In Chrome und Safari benötigt ein Element mit der Eigenschaft position: sticky eine explizit festgelegte Höhe oder Breite, um ordnungsgemäß zu funktionieren. Wenn Sie die Größe des Elements nicht festlegen, haftet es möglicherweise nicht an der angegebenen Position. In Firefox fehlt dieses Problem, und Elemente mit position: sticky funktionieren auch ohne explizite Größe korrekt.

Beachten Sie auch, dass die Eigenschaft position: sticky in Internet Explorer 11 und früheren Versionen nicht vollständig unterstützt wird. Wenn diese älteren Browser unterstützt werden müssen, wird empfohlen, alternative Ansätze oder JavaScript-Bibliotheken zu verwenden.

Insgesamt ist die Unterstützung für die Position: sticky-Eigenschaft weit verbreitet und bietet eine bequeme Möglichkeit, anhaftende Elemente einer Webseite zu erstellen. Bei der Entwicklung sollten Sie jedoch die Besonderheiten verschiedener Browser berücksichtigen und eine geeignete Strategie auswählen, um sicherzustellen, dass sie auf allen Zielplattformen ordnungsgemäß funktioniert.

Anwendungsbeispiele

Die Positionierung mit position: sticky kann in vielen verschiedenen Szenarien verwendet werden. Im Folgenden sind einige von ihnen aufgeführt:

  • Anheften des Navigationsmenüs am oberen Rand der Seite, damit der Benutzer immer schnell durch die Bereiche der Website navigieren kann.
  • Anheften einer Seitenleiste mit Funktionen auf einer Seite mit langer Liste oder Inhalt, sodass der Benutzer immer auf wichtige Tools zugreifen kann, ohne die Seite scrollen zu müssen.
  • Erstellt einen Parallaxeneffekt, bei dem einige Elemente im Hintergrund beim Scrollen auf dem Bildschirm fixiert werden, wodurch ein Tiefen- und Bewegungseffekt entsteht.
  • Fixieren Sie den Tabellenkopf, damit der Benutzer die Namen von Spalten und Zeilen sehen kann, wenn sie außerhalb des sichtbaren Bereichs liegen.

Dies sind nur einige der Möglichkeiten, position: sticky zu verwenden. Mit der richtigen Kombination von CSS und JavaScript können Sie interessante und benutzerfreundliche Interaktionen auf einer Webseite erstellen.

Beispiel 1: Sticky-Element oben auf der Seite

Betrachten Sie das erste Beispiel für die Verwendung von property position: sticky; wenn das Element beim Scrollen am oberen Rand der Seite haftet.

Um ein Sticky-Element zu erstellen, benötigen wir eine Tabelle.

NameAlter
Iwan25
Anna30
Peter35
Olga28
Michael32
Elena27

Wenn Sie eine Seite nach unten scrollen, bleibt die Tabelle sichtbar, indem sie am oberen Rand des Browserfensters haftet.

Ein Stick-Element kann auf verschiedene Elemente angewendet werden, nicht nur auf Tabellen. Dies kann ein beliebiges Blockelement sein, z. B. ein Titel, ein Menü oder eine Seitenleiste.

Beispiel 2: Sticky-Element innerhalb eines Containers

In diesem Beispiel betrachten wir die Arbeit der Sticky-Positionierung für ein Element, das sich innerhalb eines Containers befindet. Betrachten Sie das folgende Markup:

Inhalt

restlicher Inhalt des Containers

Um die Sticky-Positionierung des Elements innerhalb des Containers zu betreiben, müssen wir die Höhe des Containers einstellen.

In diesem Beispiel haben wir den Container auf eine Breite von 300 Pixeln und eine Höhe von 400 Pixeln festgelegt. Legen Sie die Eigenschaft overflow: auto fest, um einen scrollbaren Bereich zu erstellen.

Fügen Sie nun Stile für das Sticky-Element hinzu:

Sie haben die sticky-Positionierung durch Festlegen der position: sticky-Eigenschaft festgelegt. Auf top gesetzt: 20px, damit das Element zu fixieren beginnt, wenn seine obere Grenze 20 Pixel vom oberen Rand des Containers erreicht. Zur Veranschaulichung wurden die Hintergrundfarbe und die Einrückung hinzugefügt.

Beim Scrollen des Containers beginnt das sticky-Element nun zu fixieren, wenn seine obere Grenze die obere Grenze des Containers erreicht, und bleibt an seiner Stelle, solange der Container weiter scrollt. Wenn der Container wieder nach oben scrollt, kehrt das Sticky-Element ebenfalls an seine ursprüngliche Position zurück.

Vor- und Nachteile von position sticky

Vorteile:

1. Einfach zu bedienen: Die Sticky-Positionierung erfordert keine komplizierte Konfiguration und kann auf jedes Element auf der Seite angewendet werden.

2. Einfach einzurichten: mit ein paar einfachen CSS-Regeln können Sie das Verhalten eines Elements mit position sticky anpassen.

3. Vielseitig: Ermöglicht es Ihnen, verschiedene Arten von interaktiven Elementen zu erstellen, z. B. feste Tabellenköpfe oder Navigationsleisten.

4. Erfordert keine Änderung des Layouts: das Element mit position sticky verbleibt im Dokumentfluss und verletzt die Seitenstruktur nicht.

5. Benutzerfreundlich: Ein festes Element, das sich mit der Seite bewegt, erzeugt eine vorhersehbare, intuitive Benutzererfahrung.

Nachteile:

1. Wird in älteren Browsern wie Internet Explorer 11 und darunter nicht unterstützt.

2. Kann Leistungsprobleme verursachen, insbesondere wenn eine große Anzahl von Elementen mit Position sticky auf der Seite vorhanden ist oder sie ihre Position häufig ändern.

3. Abhängigkeit von der Höhe des Inhalts: ein Element mit position sticky verfolgt seine Höhe relativ zum übergeordneten Container, so dass sich sein Verhalten ändern kann, wenn sich der Inhalt innerhalb des Containers ändert.

4. Kann Überlappungsprobleme verursachen: beim Überlagern von Sticky-Elementen kann es zu Problemen mit ihrer gegenseitigen Überlappung kommen, insbesondere wenn sie einen hohen z-Index aufweisen.

5. Einschränkungen bei der Verwendung mit anderen Eigenschaften: Einige CSS-Eigenschaften wie transform und filter können das Verhalten von Elementen mit position sticky ändern und unvorhersehbare Effekte verursachen.

Diese Vor- und Nachteile müssen bei der Verwendung von position sticky berücksichtigt werden, um mögliche Probleme zu vermeiden und diese Technik so effektiv wie möglich in Ihrem Projekt anzuwenden.

Wie mache ich ein Sticky-Element ohne Verwendung von position sticky

Wenn Sie in Ihrem Projekt einen Sticky-Effekt erstellen möchten (feste Elementpositionierung auf der Seite), aber die CSS-Eigenschaft position sticky nicht verwenden möchten, da sie in einigen Browsern nicht unterstützt wird, gibt es alternative Ansätze, mit denen Sie dasselbe Ergebnis erzielen können, ohne position sticky zu verwenden.

Eine Möglichkeit, einen Sticky-Effekt zu implementieren, ist die Verwendung von JavaScript. Sie können ein Skript schreiben, das die Position der Seite überwacht und die Stile des Elements abhängig von dieser Position ändert.

window.addEventListener('scroll', function() var element = document.getElementById('sticky-element');
var rect = element.getBoundingClientRect();
if (rect.top <= 0) element.style.position = 'fixed';
element.style.top = '0';
> else element.style.position = 'static';
>
>);

In diesem Beispiel wird ein Scroll-Ereignis-Listener verwendet, der den Bildlauf der Seite überwacht. Wenn das Oberteil des Elements den oberen Rand des Ansichtsfensters erreicht, ändert sich seine Position in fixed, und top wird auf 0 gesetzt, damit das Element am oberen Rand des Fensters haftet. Andernfalls wird die Position des Elements in static wiederhergestellt, wenn der Bildlauf das Element zurückgibt.

Eine andere Möglichkeit, einen Sticky-Effekt zu implementieren, besteht darin, die CSS-Eigenschaft position sticky zusammen mit der Eigenschaft position relative oder absolute zu verwenden. Zum Beispiel können Sie das Element, das Sie sticky erstellen möchten, in ein anderes Element mit position relative oder absolute umbrechen und die Eigenschaft position sticky auf das innere Element anwenden.

.sticky-container position: relative;
>

.sticky-element position: sticky;
top: 0;
>

In diesem Beispiel ist das äußere Element .sticky-container hat eine Position relative, die das innere Element ermöglicht .sticky-element Verwenden Sie die Position-Eigenschaft sticky und werden Sie an der Spitze befestigt .sticky-container, wenn der Benutzer durch die Seite scrollt.

Diese Methoden helfen Ihnen, ein festes Element zu erstellen, ohne position sticky zu verwenden und den gewünschten Effekt auch in Browsern zu erzielen, die diese CSS-Funktion nicht unterstützen.