2017-08-15 2 views
0

Ich habe eine Seite in Magento mit allen Kategorien und Produkten aufgelistet. Oben habe ich ein Menü mit den Kategorien und die Elemente, die Sie scrollen, müssen eine Klasse bekommen, damit ich die Farbe ändern kann.Scroll Offset Ändern Menüpunkt Klasse

Ich habe dieses Skript im Moment:

function onScroll(event){ 
    var scrollPos = $(document).scrollTop(); 
    $('ul.nf-category-menu li a').each(function() { 
     var currLink = $(this); 
     var refElement = $(currLink.attr("href")); 
     if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 
      $('ul.nf-category-menu li a').removeClass("active"); 
      currLink.addClass("active"); 
     } 
     else{ 
      currLink.removeClass("active"); 
     } 
    }); 
} 

Aber die Klasse von div ändert sich bald div, kann ich einige Offset geben, so wird die Klasse später hinzugefügt werden?

Update:

Es ist nicht den „aktiven“ Klassenwechsel zu schnell, wenn te Titel 150px weg von der Spitze, würde Ich mag die Klasse um 80px von oben zu wechseln.

enter image description here

Grüße,

+0

ich nehme an, Sie für eine Verzögerung suchen, so haben Sie die 'setTimeout' Option in jQuery noch überprüfen? – Levano

+0

ich habe meine Frage aktualisiert – n00bly

+0

Niemand, der dies wissen? – n00bly

Antwort

0

ich es schon fest, war es ganz einfach nach ein paar Dinge zu versuchen. Dies ist, wie es gemacht wurde.

function onScroll(event){ 
    var scrollPos = $(document).scrollTop(); 
    $('ul.nf-category-menu li a').each(function() { 
     var currLink = $(this); 
     var refElement = $(currLink.attr("href")); 
     if (refElement.position().top+243 <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 
      $('ul.nf-category-menu li a').removeClass("active"); 
      currLink.addClass("active"); 
     } 
     else{ 
      currLink.removeClass("active"); 
     } 
    }); 
} 

if (refElement.position() nach oben hatte geändert werden: if (refElement.position() oben + 243, wo 243 ist die Anzahl der Pixel des Offset.

.
+0

ich falsch war, schafft dies eine hässliche Lücke zwischen der Klasse "aktiv" zu ändern ... – n00bly

Verwandte Themen