Ich mache eine kleine Countdown-Bar mit einem CSS-Übergang:Warum muss ich eine 1ms setTimeout() zwischen jQuery-Aufrufe setzen?
.livebar {
background-color: black;
transition: width 15s linear;
width: 100%;
height: 5px;
}
Dieser Code funktioniert nicht (in Chrom), in dem Sinne, dass es kein Übergang. Die Breite geht sofort auf 0:
$("#barbag").append("<div class='livebar'></div>");
$(".livebar").css("width", "0");
... aber dieser Code funktioniert wunderbar:
$("#barbag").append("<div class='livebar'></div>");
setTimeout(function(){$(".livebar").css("width", "0")}, 1);
Auch dabei die beiden Aussagen separat in der Konsole funktioniert, aber das Einfügen in beide versagt.
Es scheint, dass Chrome braucht einige Zeit nach Erstellen der .livebar
div um den Übergang "aktiv" zu machen. Ist das ein bekannter Fehler, oder mache ich etwas falsch oder geht etwas ganz anderes vor?
Dies ist allerdings für die Animation JS verwenden, was nicht ideal ist, wenn CSS viel besser geeignet ist. –
Das würde mit ziemlicher Sicherheit funktionieren, ebenso wie meine 'setTimeout()' Lösung, aber ich möchte verstehen, was hier vor sich geht! –