Mrz 08
Erweiterung der div-Scroll-Funktion
Durch den Kommentar von Jan zu meinem Beitrag über die von mir geschriebene Funktion zum Scrollen mittels div-Elementen angeregt, habe ich diese Funktion derart erweitert, dass nun auch eine Scroll-Begrenzung nach unten besteht. Damit ist das Problem des Endlos-Scrollens nach unten behoben.
Um die Höhe des div-Elements, in dem der anzuzeigende Inhalt steht, zu bestimmen, benutze ich die Javascript-Methode offsetHeight. Von dieser ermittelten Höhe ziehe ich die Höhe des Anzeigebereichs (tool-div) ab und erhalte damit den unteren Grenzwert beim Scrollen.
Der Code der erweiterten Funktion sieht nun wie folgt aus:
function moveDIV( var1, var2 ) { if ( var1 == 0 ) { document.getElementById("zeug").style.left = "0px"; document.getElementById("zeug").style.top = "0px"; } else { if ( var2 ) { /* alter Wert ohne Einheit */ var2 = document.getElementById("zeug").style.left; var2 = Number(var2.substring(0, var2.length-2)) + var1; var3 = document.getElementById("zeug").style.width; var3 = Number(var3.substring(0, var3.length-2)); var4 = document.getElementById("tool").style.width; var4 = Number(var4.substring(0, var4.length-2)) - var3; // wenn nicht am linken "rahmen" angekommen if ( var2 <= 0 ) { // wenn nicht am rechten "rahmen" angekommen if ( var2 >= var4 ) { document.getElementById("zeug").style.left = var2 + "px"; } else { document.getElementById("zeug").style.left = var4 + "px"; } } else { document.getElementById("zeug").style.left = "0px"; } } else { /* alter Wert ohne Einheit */ var2 = document.getElementById("zeug").style.top; var2 = Number(var2.substring(0, var2.length-2)) + var1; var3 = document.getElementById("zeug").offsetHeight; var4 = document.getElementById("tool").style.height; var4 = Number(var4.substring(0, var4.length-2)) - var3; // wenn nicht am oberen "rahmen" angekommen if ( var2 <= 0 ) { // wenn nicht am unteren "rahmen" angekommen if ( var2 >= var4 ) { document.getElementById("zeug").style.top = var2 + "px"; } else { document.getElementById("zeug").style.top = var4 + "px"; } } else { document.getElementById("zeug").style.top = "0px"; } } } }
Das Script in Aktion kann auf dieser Demoseite angesehen werden.
Juni 25th, 2008 at 11:38 am
Hallo,
vielen Dank für diese sehr nützliche Funktion!
Ich möchte einen Vorschlag machen: Mit nur sehr wenigen Änderungen wird die Lösung sogar barrierefrei.
1. Setze die Box #tool per CSS auf overflow:auto;
2. Und setze sie erst per JS auf overflow:hidden, also
3. Wenn’s perfekt sein soll: Schreibe das Fadenkreuz ebenfalls erst per JS ins Dokument.
Fertig! Wenn JS aus ist, erscheinen normale Scrollbalken, ansonsten das Fadenkreuz zum Scrollen.
Gruß Arnd
Juli 4th, 2008 at 8:57 am
Vielen Dank für deine Idee, Arnd.
Ich hab alle 3 Vorschläge von dir angenommen. Anstatt das Fadenkreuz per JS ins Dokument zu schreiben, habe ich den Weg über die css-Eigenschaft ‚visibility: hidden‘ gewählt. Nach dem Laden des Dokumentes wird das Fadenkreuz per Javascript sichtbar und der normale Scrollbalken wird ausgeblendet.
November 20th, 2011 at 7:48 pm
Einwandfrei, Danke Dir.
März 26th, 2012 at 12:21 pm
Rückfrage zu deinem scrollenden div.:
Könnte man das Scrollen auch davon abhängig machen ob ein element, z.b eine Figur den rechten bzw. unteen Rand des divs erreicht , um dann auf den nächsten Teilbereich eines z.B Spielbrettes zu kommen , bzw diesen dann entsprechend nachladen?