Wpis z mikrobloga

Mireczki z #webdev!
Dodaję i usuwam animację z pewnego elementu na stronie za pomocą javascriptu. I mam problem z takim kawałkiem kodu:

document.getElementById('cos').style.animation = 'Disappearing 0.5s forwards';
setTimeout(function() {document.getElementById('cos').style.display = 'none';}, 510);

czasem animacja leci normalnie, a czasem element znika od razu, zupełnie jakby zmiana sposobu wyświetlania działała od razu, a nie z opóźnieniem.

#javascript #html #js #programowanie
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Kavelach: a nie możesz jak biały człowiek klasami tego zrobić?

a) elementy, którym zmieniasz wartość 'display' mogą/będą mieć problem z transition i/lub animacjami;
b) setTimeout może być niedokładny i odpalać się niedokładnie po takim czasie jak podajesz w argumencie. Jeśli już chcesz to koniecznie robić js'em, to słuchaj eventu, który nazywa się jakoś w stylu onAnimationEnd
  • Odpowiedz
@Zero: @rbielawski: już wiem o co chodzi. Wcześniejsza animacja zatrzymywała się na ostatniej klatce (forwards) i tak sobie trwała przez cały czas, a kiedy inicjowana była następna, to wchodziły w jakiegoś rodzaju konflikt i całość znikała sobie od tak. Poradziłem sobie tak, że przed odpaleniem animacji zmieniam styl elementu (z docelowego opacity: 1 na opacity: 1), wtedy wszystko działa pięknie i płynnie.
Może to nie
  • Odpowiedz