Ich habe den folgenden JavaScript/jQuery-Code. Ich sehe kein Problem damit, aber es funktioniert nicht richtig.jQuery animiert läuft nur einmal korrekt, dann beginnt seltsam zu verhalten
$(document).ready(function(){
$(window).scroll(function(){
if($(window).scrollTop() > 0) {
$("#forumHeader").animate({top: '250px'});
}
else
{
$("#forumHeader").animate({top: '60px'});
}
});
});
#forumHeader
{
position: absolute;
top: 60px;
left: 0%;
height: 100px;
width: 200px;
color: white;
background-color: red;
}
#content
{
height: 1000px;
background-color: gray;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="forumHeader">Forum Header</div>
<div id="content">Some content here</div>
Das erste Mal, dass ich es nach unten scrollen funktioniert, wie es sollte und #forumHeader oben Animieren: 250px. Aber wenn ich wieder zurück blättern kann, kann es mehrere Sekunden dauern, bevor es wieder nach oben animiert: 60px. Manchmal ändert es sich hin und her, manchmal kann es gar nichts tun. Was ist das Problem? Bitte helfen ..
Das Scroll-Ereignisse läuft viel öfter als einmal, während Sie scrollen. Das Hinzufügen/Entfernen einer Klasse und das Animieren mit CSS würde wahrscheinlich bessere Ergebnisse bringen als Tausende von Animationen in die Warteschlange zu stellen. –
Jede Lösung in Bezug auf die Handhabung des Scroll-Ereignisses sollte irgendeine Art von Drosselung/Entprellung verwenden, so dass das Scroll-Ereignis nicht wiederholt für eine (aus der Benutzerperspektive) Scroll-Aktion verarbeitet wird. Es wird auch empfohlen, Selektoren außerhalb des scroll -Ereignishandlers zu verschieben, z. B. '$ (" # forumHeader ")', und zwischengespeichert, sodass eine variable Referenz auf das Element verwendet werden kann, anstatt jedes Mal ausgeführt zu werden, um die Leistung zu erhöhen. – Taplar
@Taplar, die mir nicht einmal in den Sinn kam, danke. Ich habe den folgenden Code aktualisiert. –