• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Menulink mit underline beim Scrollen

rumsi

Mecklenburger Orangenapfel
Registriert
24.03.08
Beiträge
2.979
Moin,

ich brauch da mal wieder eure Hilfe.
Folgender Plan: Es gibt eine einzige Webseite, eine HTML, diese soll an der oberen Seite ein feststehendes Menü haben.
Mit Klick auf einen Menülink springt die Webseite an die entsprechende Stelle. Früher wurde das mal mit Ankern gelöst.
Soweit komm ich auch noch. Was ich gerne haben möchte ist, dass wenn der User nun nicht die Links verwendet, sondern selbst an die entsprechende Stelle scrollt, er im Menü dennoch den Menülink dazu unterstreicht.

Hat jmd. einen Tipp/Lösungsvorschlag für mich?

Gracias,
Micha
 

mkr*

Murer Reinette
Registriert
09.07.10
Beiträge
1.635
Moin,

ich denke das ganze funktioniert, indem jQuery erkennt an welcher Position der Seite du bist und somit dem aktiven Punkt einen Unterstrich verpasst.

Im Quellcode habe ich das hier gefunden:
Code:
[COLOR=#000000]jQuery(document).scroll(function() {[/COLOR][COLOR=#000000]    levelScroll = jQuery(document).scrollTop();        jQuery('.starter_model').css('marginTop',-(levelScroll)+'px');    jQuery('.marke_licher').css('marginTop',760-(levelScroll/2)+'px');    jQuery('.kollektion_bg').css('marginTop',1264-(levelScroll/2)+'px');    jQuery('.videos_bg').css('marginTop',1766-(levelScroll/2)+'px');    jQuery('.finder_bg').css('marginTop',2280-(levelScroll/2)+'px');            if (levelScroll < 1400){        jQuery('.nav_marke').removeClass('active');        jQuery('.nav_kollektion').removeClass('active');        jQuery('.nav_videos').removeClass('active');        jQuery('.nav_finder').removeClass('active');            } else if (levelScroll >= 1400 && levelScroll < 2400){        jQuery('.nav_marke').addClass('active');        jQuery('.nav_kollektion').removeClass('active');        jQuery('.nav_videos').removeClass('active');        jQuery('.nav_finder').removeClass('active');                jQuery('.marke_text').fadeTo('slow', 1);        jQuery('.marke h1').fadeTo('slow', 1);
[/COLOR]
[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]2400[/COLOR] && levelScroll < [COLOR=#1C00CF]3400[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).addClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]
[/COLOR]
[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]3400[/COLOR] && levelScroll < [COLOR=#1C00CF]4400[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).addClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        [/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.videos'[/COLOR]).parallaxSlider();[/COLOR]
[COLOR=#000000]        [/COLOR]
[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]4400[/COLOR] && levelScroll < [COLOR=#1C00CF]4800[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).addClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        [/COLOR]
[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]4800[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]    }[/COLOR]
[COLOR=#000000]});[/COLOR]


Hier wird deklariert, welcher Menübereich von wo bis wo geht und welcher dementsprechend die Klasse 'active' bekommt.

Beste Grüße,
mkr*
 

seaker

Empire
Registriert
19.04.10
Beiträge
88
Such mal nach der Funktion "Scrollspy". Das gibt es als Implementation für JQuery und MooTools.

Was macht das: Es "beobachtet" wo du dich auf der Seite befindest und löst dann ein entsprechendes Event aus.Mit dem Event kannst du dann wiederum diverse Sachen anstellen. Ein Beispiel wie du es suchst mit Code und erklärung dürfte das hier sein:

http://jsfiddle.net/mekwall/up4nu/
 

__struct

Jonagold
Registriert
11.04.13
Beiträge
20
Moin,

ich denke das ganze funktioniert, indem jQuery erkennt an welcher Position der Seite du bist und somit dem aktiven Punkt einen Unterstrich verpasst.

Im Quellcode habe ich das hier gefunden:
Code:
[COLOR=#000000]jQuery(document).scroll(function() {[/COLOR][COLOR=#000000]    levelScroll = jQuery(document).scrollTop();        jQuery('.starter_model').css('marginTop',-(levelScroll)+'px');    jQuery('.marke_licher').css('marginTop',760-(levelScroll/2)+'px');    jQuery('.kollektion_bg').css('marginTop',1264-(levelScroll/2)+'px');    jQuery('.videos_bg').css('marginTop',1766-(levelScroll/2)+'px');    jQuery('.finder_bg').css('marginTop',2280-(levelScroll/2)+'px');            if (levelScroll < 1400){        jQuery('.nav_marke').removeClass('active');        jQuery('.nav_kollektion').removeClass('active');        jQuery('.nav_videos').removeClass('active');        jQuery('.nav_finder').removeClass('active');            } else if (levelScroll >= 1400 && levelScroll < 2400){        jQuery('.nav_marke').addClass('active');        jQuery('.nav_kollektion').removeClass('active');        jQuery('.nav_videos').removeClass('active');        jQuery('.nav_finder').removeClass('active');                jQuery('.marke_text').fadeTo('slow', 1);        jQuery('.marke h1').fadeTo('slow', 1);
[/COLOR]
[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]2400[/COLOR] && levelScroll < [COLOR=#1C00CF]3400[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).addClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]
[/COLOR]
[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]3400[/COLOR] && levelScroll < [COLOR=#1C00CF]4400[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).addClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]

[COLOR=#000000]        jQuery([COLOR=#C41A16]'.videos'[/COLOR]).parallaxSlider();[/COLOR]

[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]4400[/COLOR] && levelScroll < [COLOR=#1C00CF]4800[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).addClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]

[COLOR=#000000]    } [COLOR=#AA0D91]else[/COLOR] [COLOR=#AA0D91]if[/COLOR] (levelScroll >= [COLOR=#1C00CF]4800[/COLOR]){[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_marke'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_kollektion'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_videos'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]        jQuery([COLOR=#C41A16]'.nav_finder'[/COLOR]).removeClass([COLOR=#C41A16]'active'[/COLOR]);[/COLOR]
[COLOR=#000000]    }[/COLOR]
[COLOR=#000000]});[/COLOR]


Hier wird deklariert, welcher Menübereich von wo bis wo geht und welcher dementsprechend die Klasse 'active' bekommt.

Beste Grüße,
mkr*

Hi, sicher dass das crossbrowser kompatibel ist? Hatte mit
Code:
[COLOR=#000000]jQuery(document).scrollTop();[/COLOR]
Probleme und nutz sowas hier:

Code:
$("body,html,document").animate({ scrollTop: $('#id').offset().top }, 400 );