Softscroll mit jQuery
Mit jQuery hat man eine JavaScript-Bibliothek an der Hand, mit der man binnen weniger Minuten effektvolle Dinge in seinem DOM anstellen kann. Mit dem Plugin “Interface” gibt es dazu noch eine Effektbibliothek. Unter den Effekten befindet sich auch “ScrollTo”, welches das weiche, nicht ruckartige scrollen zu einem internen Link ermöglicht. Ich wollte aber nicht aber Links einzeln angeben, zu denen weich gescrollt wird, sondern mit einen Befehl alle. Hier ist die Anweisung…
Mit der folgenden Anweisung konnte man mittels Interface zu einem Element auf der gleichen Seiten weich scrollen:
$(’#lastP’).ScrollTo(800);
Das eingesetzt bei einem Klick auf einem Link mit einer bestimmten ID, scrollte weich zum Element mit der ID lastP.
Inspiriert von Oliver wollte ich aber auch für jQuery eine Funktion haben, die alle Seiteninternen Verweise mit einem Softscroll verpasst, und zwar ohne, dass ich wie bei Oliver jedem Link die CSS-Klasse softscroll zuweisen muss. Weil mich google nicht weit gebracht hat, hab ich einmal selbst was zusammengeschrieben, was bei einer validen Seite wunderbar funktioniert.
$(document).ready(maininit);
function maininit() {
$('a[@href^="#"]').click(function() {
var parts = this.href.split('#');
var scrolltarget = '#' + parts\[1\];
$(scrolltarget).ScrollTo(800);
return false;
});
};
Denkt euch bitte bei parts die Schrägstriche vor den eckigen Klammern weg.
Das zustätzlich mit jQuery und Interface in den HTML-Kopf der Webseite, scroll der Browser sehr weich zu dem angegebenen Link auf der gleichen Seite. Wie gesagt, ohne Extra-Markup, das ganze ziemlich Web 2.0 und vor allem Dingen mit “unobtrusive JavaScript”.
UPDATE: Dank Markus flackert nun nichts mehr. Besonderer Dank geht an Stefan, der mein Script in sein Plugin aufgenommen hat (Tanks Stefan!).
1 Silvio schrieb am 27. Oktober 2006 (10:10 Uhr)
2 macx schrieb am 27. Oktober 2006 (10:10 Uhr)
3 Markus Stange schrieb am 27. Oktober 2006 (17:10 Uhr)
4 Stefan schrieb am 27. Oktober 2006 (19:10 Uhr)
5 macx schrieb am 27. Oktober 2006 (19:10 Uhr)
6 Stefan schrieb am 27. Oktober 2006 (19:10 Uhr)
7 macx schrieb am 27. Oktober 2006 (19:10 Uhr)
8 Oliver schrieb am 04. November 2006 (23:11 Uhr)
9 Oliver schrieb am 06. November 2006 (13:11 Uhr)
10 macx schrieb am 06. November 2006 (13:11 Uhr)
11 Oliver schrieb am 06. November 2006 (17:11 Uhr)
12 Johannes schrieb am 06. Mai 2007 (01:05 Uhr)
13 Jan schrieb am 20. Juni 2007 (11:06 Uhr)
14 Pepe schrieb am 10. Januar 2008 (14:01 Uhr)
15 Johannes schrieb am 17. Februar 2008 (19:02 Uhr)
16 Steve schrieb am 21. August 2009 (21:08 Uhr)
17 gmadewiesn schrieb am 19. Januar 2010 (22:01 Uhr)