ich habe 3 Div Container untereinander
Höhe des ersten Divs 200px
Höhe des zweiten Divs 100px
Höhe des dritten Divs 2000px
Nun ist der Benutzer ja gezwungen, nach unten zu scrollen um das Ende des dritten Divs zu sehen.
Jetzt soll es aber so sein, dass Div Nummer 2 nach oben wegfließt (genau so wie Div Nummer 1), aber eben NICHT verschwindet, sondern sich am oberen Rand positioniert, und der Inhalt von Div Nummer 3 darunter hinwegfließt.
Beim nach oben scrollen der genau spiegelverkehrte Weg:
Sobald Div Nummer 1 wieder sichtbar wird, „schiebt“ dieses Div No. 1 Div No. 2 wieder max 200 px nach unten.
var elem = document.getElementById(‚div2‘); var pos= 200; window.onscroll = function () { var scroll = window.pageYOffset; if ( scroll > pos ){ var neu=scroll - pos ; elem.style.top= neu + „px“; } }
muss natürlich noch erweitert ( z.B. für IE scrollTop ) und verfeinert werden ( div2 geht nicht ganz auf die alte position )
Ne… im Ernst: Danke!
Hat mich schon mal einen RIESEN- Schritt weitergebracht!
Obwohl ich das mit dem Scroll-top noch nicht ganz gecheckt habe, muss ich ehrlich zugestehen. Denn es ist, wie Du gesagt hast: im IE funktioniert es nicht…
Obwohl ich das mit dem Scroll-top noch nicht ganz gecheckt
habe, muss ich ehrlich zugestehen. Denn es ist, wie Du gesagt
hast: im IE funktioniert es nicht…
um im IE die pixel des scrolls zu bekommen, muss sowas rein:
if( document.body ){ var scroll = document.body.scrollTop }
um diverse Browser „aufzuspüren“ findest Du über Google bestimmt jede Menge Beispiele und Möglichkeiten.
ICh habe den Ansatzt ein wenig verändert. Die Sache mit der fehlerhaften Positionierung war ein no-go, da ds DIV immer -ich möchte sagen - pixelgenau positioniert werden muss.
Also, da in diesem Div aber sonst nichts großartiges drinsteht, habe ich es einfach kopiert (Div4) und auf hidden gesetzt.
ICh habe den Ansatzt ein wenig verändert. Die Sache mit der
fehlerhaften Positionierung war ein no-go, da ds DIV immer
-ich möchte sagen - pixelgenau positioniert werden muss.
o.k. … ich habe es mal so „verfeinert“, dass es nach dem scrollen wieder pixelgenau unter div1 ist:
Moment!!!
Es geht noch besser )
Bei der function test hatte ich die Verwendung des mouse-scroll-rades berücksichtigt … das sind ja ziemlich große scroll-sprünge … und das div blieb zu weit unten hängen.
Aber … sobald div1 wieder ins Bild kommt, sollte ja div2 darunter gepackt werden.
Darum unter diese if-Abfrage
if ( scroll > pos ){ var neu=scroll - pos ; elem.style.top= neu + „px“;}
noch dieses else einfügen else {elem.style.top= „0px“;}