Ich habe seit einiger Zeit nach einer Lösung für mein Problem mit der klebrigen Seitenleiste gesucht. Ich habe eine konkrete Vorstellung davon, wie es sich verhalten soll. effektiv möchte ich, dass es beim Scrollen nach unten bleibt, und sobald Sie wieder nach oben scrollen, möchte ich, dass es in einer fließenden Bewegung (kein Springen) oben bleibt. Ich kann kein Beispiel dafür finden, was ich erreichen möchte, deshalb habe ich ein Bild erstellt, von dem ich hoffe, dass es den Punkt klarer verdeutlicht:
- Die Seitenleiste befindet sich unter der Kopfzeile.
- Während Sie nach unten scrollen, bleibt die Seitenleiste auf gleicher Höhe mit dem Inhalt der Seite, sodass Sie sowohl durch die Seitenleiste als auch durch den Inhalt scrollen können.
- Erreichen Sie die Unterseite der Seitenleiste, die Seitenleiste bleibt am unteren Rand des Ansichtsfensters hängen (die meisten Plugins erlauben nur das Festhalten an der Oberseite, einige, die das Festhalten an der Unterseite ermöglichen, erlauben nicht beide).
- Erreichen Sie den unteren Rand, die Seitenleiste befindet sich über der Fußzeile.
- Während Sie nach oben scrollen, bleibt die Seitenleiste auf gleicher Höhe mit dem Inhalt, sodass Sie erneut durch den Inhalt und die Seitenleiste scrollen können.
- Erreichen Sie die Oberseite der Seitenleiste, die Seitenleiste bleibt oben im Ansichtsfenster.
- Erreichen Sie die Oberseite und die Seitenleiste befindet sich wieder unter der Kopfzeile.
Ich hoffe das sind genug Informationen. Ich habe eine jsfiddle erstellt, um alle Plugins / Skripte zu testen, die ich für diese Frage zurückgesetzt habe: http://jsfiddle.net/jslucas/yr9gV/2/ .
Danke für die tolle Grafik. Ich suchte auch nach einer Lösung für diese Herausforderung!
Leider geht die andere hier veröffentlichte Antwort nicht auf Anforderung Nr. 5 ein, die die Möglichkeit vorsieht, reibungslos durch die Seitenleiste zurückzuscrollen.
Ich habe eine Geige erstellt, die alle Anforderungen implementiert: http://jsfiddle.net/bN4qu/5/
Die Kernlogik, die implementiert werden muss, ist:
In der Geige verwende ich die CSS3-Transformation, um das Zielelement zu verschieben, sodass es in z. B. IE <9 nicht funktioniert. Die Logik ist jedoch solide, um einen anderen Ansatz zu verwenden.
Außerdem habe ich Ihre Geige so geändert, dass die klebrige Seitenleiste einen Hintergrund mit Farbverlauf hat. Dies hilft zu zeigen, dass das richtige Verhalten gezeigt wird.
Ich hoffe das ist nützlich für jemanden!
quelle
$.css
Funktion in a verpacktrequestAnimationFrame
und eine Destroy / Unbind-Funktion zur Verwendung in modernen Frontend-Frameworks wie vue / react hinzugefügt. Leistung ist danach absolut kein Thema mehr!Hier ist ein Beispiel für die Implementierung:
JavaScript:
CSS:
Demo: http://jsfiddle.net/ryanmaxwell/25QaE/
Dies funktioniert in allen Szenarien wie erwartet und wird auch im IE gut unterstützt.
quelle
Ich suchte genau das Gleiche. Anscheinend musste ich nach obskuren Begriffen suchen, um eine ähnliche Frage mit der Grafik zu finden. Es stellt sich heraus, dass es genau das ist, wonach ich gesucht habe. Ich konnte keine Plugins finden und habe beschlossen, es selbst zu machen. Hoffentlich wird jemand dies sehen und verfeinern.
Hier ist ein schnelles und schmutziges Beispiel-HTML, das ich verwende.
Hier ist die jQuery, die ich gemacht habe:
Einige Notizen:
Wenn jemand dies ein bisschen weiter verfeinern kann, wäre das großartig.
quelle
Arbeitsbeispiel: https://jsfiddle.net/L7xoopst/6/
quelle
Es gibt ein relativ unbekanntes Plugin im Wordpress-Repository, das als WP Sticky Sidebar bekannt ist. Das Plugin macht genau das, was Sie wollten (Sticky Sidebar: Bleiben Sie beim Scrollen nach unten, beim Scrollen nach oben oben) WP Sticky Sidebar Wordpress-Repository Link: https://wordpress.org/plugins/mystickysidebar/
quelle