Ich habe ein Element, das Position ist: fest und scrollt so mit der Seite, wie ich es aber möchte. Wenn der Benutzer einen Bildlauf durchführt, soll das Element an einem bestimmten Punkt aufhören zu scrollen, z. B. wenn es 250 Pixel vom oberen Rand der Seite entfernt ist. Ist dies möglich? Jede Hilfe oder Beratung wäre hilfreich, danke!
Ich hatte das Gefühl, dass ich dazu jquery verwenden müsste. Ich habe versucht, den Bildlauf oder die Position des Benutzers zu ermitteln, war aber sehr verwirrt. Gibt es irgendwelche Abfragelösungen?
jquery
css
positioning
Louise McComiskey
quelle
quelle
Antworten:
Hier ist ein schnelles jQuery-Plugin, das ich gerade geschrieben habe und das das kann, was Sie benötigen:
Siehe Arbeitsbeispiel →
quelle
$('window')
sollte nicht in Anführungszeichen stehen. Aber danke dafür, es war sehr hilfreich.Meinst du so etwas?
http://jsfiddle.net/b43hj/
Code-Snippet anzeigen
quelle
bottom
und diesem berechneten Wert (Versatz um 250) in der max.Hier ist ein vollständiges JQuery-Plugin, das dieses Problem löst:
https://github.com/bigspotteddog/ScrollToFixed
Die Beschreibung dieses Plugins lautet wie folgt:
Dieses Plugin wird verwendet, um Elemente am oberen Rand der Seite zu fixieren, wenn das Element vertikal aus der Ansicht gerollt worden wäre. Es erlaubt dem Element jedoch, sich mit dem horizontalen Bildlauf weiter nach links oder rechts zu bewegen.
Bei einer Option marginTop bewegt sich das Element nicht mehr vertikal nach oben, sobald der vertikale Bildlauf die Zielposition erreicht hat. Das Element bewegt sich jedoch weiterhin horizontal, wenn die Seite nach links oder rechts gescrollt wird. Sobald die Seite über die Zielposition hinaus nach unten gescrollt wurde, wird das Element an seiner ursprünglichen Position auf der Seite wiederhergestellt.
Dieses Plugin wurde in Firefox 3/4, Google Chrome 10/11, Safari 5 und Internet Explorer 8/9 getestet.
Verwendung für Ihren speziellen Fall:
quelle
Sie können das tun, was James Montagne mit seinem Code in seiner Antwort getan hat, aber das lässt es in Chrome (getestet in V19) flackern.
Sie können dies beheben, wenn Sie "Rand oben" anstelle von "oben" setzen. Ich weiß nicht wirklich, warum es mit Margin tho funktioniert.
http://jsbin.com/idacel
quelle
Eine mögliche CSS ONLY- Lösung kann mit erreicht werden
position: sticky;
Die Browserunterstützung ist wirklich sehr gut: https://caniuse.com/#search=position%3A%20sticky
Hier ist ein Beispiel: https://jsfiddle.net/0vcoa43L/7/
quelle
meine Lösung
quelle
In einem Projekt ist beim Laden der Seite tatsächlich eine Überschrift am unteren Bildschirmrand fixiert (es handelt sich um eine Zeichen-App, sodass sich die Überschrift unten befindet, um dem Canvas-Element im breiten Ansichtsfenster maximalen Platz zu geben).
Ich brauchte die Überschrift, um 'absolut' zu werden, wenn sie die Fußzeile beim Scrollen erreicht, da ich die Überschrift nicht über der Fußzeile haben möchte (die Überschriftenfarbe entspricht der Hintergrundfarbe der Fußzeile).
Ich habe hier die älteste Antwort erhalten (bearbeitet von Gearge Millo) und dieses Code-Snippet hat für meinen Anwendungsfall funktioniert. Mit einigem Herumspielen habe ich das zum Laufen gebracht. Jetzt sitzt die feste Überschrift wunderschön über der Fußzeile, sobald sie die Fußzeile erreicht.
Ich dachte nur, ich würde meinen Anwendungsfall und seine Funktionsweise teilen und mich bedanken! Die App: http://joefalconer.com/web_projects/drawingapp/index.html
quelle
Ich habe einen Blog-Beitrag darüber geschrieben , der diese Funktion enthält:
quelle
Eine Lösung mit Mootools Framework.
http://mootools.net/docs/more/Fx/Fx.Scroll
Holen Sie sich die Position (x & y) des Elements, an dem Sie den Bildlauf stoppen möchten, mit $ ('myElement'). GetPosition (). X.
$ ('myElement'). getPosition (). y
Verwenden Sie für eine Art Animation einen Bildlauf:
new Fx.Scroll ('scrollDivId', {offset: {x: 24, y: 432}}). toTop ();
Um den Bildlauf sofort einzustellen, verwenden Sie:
neues Fx.Scroll (myElement) .set (x, y);
Hoffe das hilft !! : D.
quelle
Diese Lösung hat mir gefallen
Mein Problem war, dass ich mich mit einem positionsbezogenen Container in Adobe Muse befassen musste.
Meine Lösung:
quelle
Nur improvisierter mVChr-Code
quelle
$(this)
und$(window)
in Variablen ist, dass Sie nur tun müssen$this.height()
und so weiter. Wäre es nicht besser, anstatt eine obere Position festzulegen, wenn das Plugin den ursprünglichen oberen Wert speichert und beim Festlegen einer festen Breite darauf zurückgreift? Und was meinst du damitJust improvised mVChr code
?Ich habe die Antwort von @ mVchr angepasst und invertiert, um sie für die klebrige Anzeigenpositionierung zu verwenden: Wenn Sie sie unbedingt positionieren müssen (Scrollen), bis der Header-Junk nicht mehr auf dem Bildschirm angezeigt wird, aber danach auf dem Bildschirm fixiert / sichtbar bleiben muss:
CSS:
quelle
Ich habe die Antwort von @james geliebt, aber ich habe nach der Umkehrung gesucht, dh nach der festen Position kurz vor der Fußzeile. Hier ist, was ich mir ausgedacht habe
Jetzt würde das feste Element direkt vor der Fußzeile anhalten. und wird sich nicht damit überschneiden.
quelle