Ab Chrome 81 müssen Sie keine Ereignis-Listener mehr hinzufügen, um ein Erzwingen des Neu-Snappens zu erzwingen.
Mit CSS Scroll Snap können Webentwickler das Scrollen durch Festlegen von Scroll-Snap-Positionen gut steuern. Ein Nachteil der aktuellen Implementierung ist, dass das Scrollen nicht gut funktioniert, wenn sich das Layout ändert, z. B. wenn der Darstellungsbereich neu skaliert oder das Gerät gedreht wird. Dieser Mangel wurde in Chrome 81 behoben.
Interoperabilität
Viele Browser unterstützen CSS Scroll Snap grundsätzlich. Weitere Informationen finden Sie unter Kann ich CSS-Scroll Snap verwenden?
Chrome ist derzeit der einzige Browser, der nach Layoutänderungen ein Scroll-Snapping implementiert. Für Firefox gibt es ein Ticket zur Implementierung dieser Funktion und für Safari ein Ticket für das erneute Anpinnen nach einer Änderung des Inhalts eines Scrollers. Derzeit können Sie dieses Verhalten simulieren, indem Sie Ereignis-Listenern den folgenden Code hinzufügen, um ein Anspringen zu erzwingen:
javascript
scroller.scrollBy(0,0);
Dies ist jedoch keine Garantie dafür, dass der Scroller wieder zum selben Element springt.
Hintergrund
CSS-Scroll-Snap
Mit der CSS-Scroll-Snap-Funktion können Webentwickler gut steuerbare Scroll-Erlebnisse erstellen, indem sie Scroll-Snap-Positionen angeben. Durch diese Positionen wird sichergestellt, dass scrollbare Inhalte richtig mit ihrem Container ausgerichtet sind, um Probleme mit ungenauem Scrollen zu vermeiden. Mit anderen Worten:
- Verhindert ungünstige Scrollpositionen beim Scrollen.
- Erzeugt den Effekt, als würde man durch Inhalte blättern.
Paginierte Artikel und Bilderkarusselle sind zwei gängige Anwendungsfälle für Scroll-Snaps.
Mängel
Mit dem Scroll-Snapping können Nutzer mühelos durch Inhalte scrollen. Da sich die Funktion jedoch nicht an Änderungen von Inhalten und Layout anpassen lässt, gehen einige potenzielle Vorteile verloren. Wie im Beispiel oben gezeigt, müssen Nutzer die Scrollpositionen jedes Mal neu anpassen, wenn sie die Größe eines Fensters ändern, um das zuvor angedockte Element zu finden. Hier einige häufige Szenarien, die zu Layoutänderungen führen:
- Größe eines Fensters ändern
- Gerät drehen
- Entwicklertools öffnen
Die ersten beiden Szenarien machen CSS Scroll Snap für Nutzer weniger attraktiv und das dritte Szenario ist ein Albtraum für Entwickler beim Debuggen. Entwickler müssen diese Mängel auch berücksichtigen, wenn sie eine dynamische Umgebung schaffen möchten, die Aktionen wie das Hinzufügen, Entfernen oder Verschieben von Inhalten unterstützt.
Eine gängige Lösung besteht darin, Listener hinzuzufügen, die ein programmatisches Scrollen über JavaScript ausführen, um das Anpinnen zu erzwingen, wenn eine dieser Layoutänderungen auftritt. Diese Problemumgehung kann ineffektiv sein, wenn der Nutzer erwartet, dass der Scroller wieder zu den vorherigen Inhalten zurückkehrt. Eine weitere Verarbeitung mit JavaScript würde den Zweck dieser CSS-Funktion fast zunichte machen.
Integrierte Unterstützung für das erneute Anpinnen nach Layoutänderungen in Chrome 81
Diese Mängel treten in Chrome 81 nicht mehr auf: Scrollbalken bleiben auch nach dem Ändern des Layouts angedockt. Nach dem Ändern des Layouts werden die Scrollpositionen neu bewertet und bei Bedarf wieder an der nächsten Snap-Position angedockt. Wenn der Scroller zuvor an einem Element angedockt war, das nach der Layoutänderung noch vorhanden ist, versucht er, wieder daran anzudocken. Sehen Sie sich an, was im folgenden Beispiel passiert, wenn sich das Layout ändert.
Weitere Informationen finden Sie in der Spezifikation für das erneute Anpinnen nach Layoutänderungen.
Beispiel: Feststehende Bildlaufleisten
Mit „An Layoutänderungen andocken“ können Entwickler mit wenigen Zeilen CSS scrollbare Elemente implementieren, die an einer bestimmten Position bleiben:
.container {
scroll-snap-type: y proximity;
}
.container::after {
scroll-snap-align: end;
display: block;
}
Möchten Sie mehr erfahren? Eine visuelle Darstellung finden Sie in der Demo-Chat-Benutzeroberfläche.
Zukünftige Arbeit
Alle Scrolleffekte für das erneute Anpinnen sind derzeit sofort sichtbar. Eine mögliche Folgemaßnahme ist die Unterstützung des erneuten Anpinnens mit effektivem Scrollen. Weitere Informationen finden Sie im Hilfeartikel Problem mit der Spezifikation.
Feedback
Ihr Feedback ist für uns sehr wertvoll, damit wir das Anpassen nach Layoutänderungen verbessern können. Probieren Sie es also aus und teilen Sie uns mit, was Sie davon halten.