Ich habe eine ziemlich einfache Grenze Highlight Animation erstellt, die gut funktioniert. Aber wenn Sie mit der Maus darüber fahren, während es bereits animiert, flippt es total aus.Javascript - Animation flackert, wenn mehrmals ausgeführt
function borderHighlight (x) {
var start = 0;
var end = 255;
var current = 0;
var boo = 0;
var id = setInterval (frame, 5);
function frame() {
if (current < end && boo == 0) {
x.style.borderColor = "rgb(" + current + ", " + current + "," + current + ")";
x.parentNode.style.borderColor = "rgb(" + current + ", " + current + "," + current + ")";
current ++;
} else if (current == end && boo == 0) {
boo = 1;
} else if(current >= start && boo == 1) {
x.style.borderColor = "rgb(" + current + ", " + current + "," + current + ")";
x.parentNode.style.borderColor = "rgb(" + current + ", " + current + "," + current + ")";
current --;
} else {
clearInterval(id);
}
}
}
Wenn Sie alles in Aktion sehen möchten, hier ist die URL.
Ich weiß, dass dies ein ähnliches Thema zu anderen hier ist, aber ich habe keine Antwort gefunden, die meiner speziellen Situation entspricht (oder zumindest nicht verstehe, wie es passt).
Vielen Dank im Voraus für jegliche Hilfe oder konstruktive Kommentare.
Sie müssen die Intervall-ID und 'clearInterval (id)' am Anfang persistieren. 'x.interval = setInterval (Rahmen, 5); ... clearInterval (x.interval) '; das "Entprellen" -Muster, um viele Animationen auf einmal zu vermeiden ... (das Aufrufen von clearInterval bei einer ungültigen ID wird nichts schaden) – dandavis