У меня есть элемент сообщения, который я добавляю на свою страницу в функции:
const markup = `<div class="todolist__message todolist__message${status? "--ok":"--err"}">${msg}</div>`;
elements.tdl.insertAdjacentHTML('beforeend', markup);
if(fade) {
const message = document.querySelector('.todolist__message');
// Change the message opacity
message.style.opacity = '0';
// Remove the message element
setTimeout(() => {
document.querySelector('.todolist__message').parentElement.removeChild(message);
}, 2000);
}
и добавляю свойства css:
opacity: 1;
transition: opacity 1s;
Что я не понимаюпочему, когда я изменяю непрозрачность сообщения на 0, переход не работает, и элемент мгновенно исчезает?
Я должен переписать код, добавив изменение стиля в setTimeout и добавить дополнительный setTimeout для удаления элемента:
const markup = `
<div class="todolist__message todolist__message${status? "--ok":"--err"}">${msg}</div>
`;
elements.tdl.insertAdjacentHTML('beforeend', markup);
if(fade) {
setTimeout(() => {
const message = document.querySelector('.todolist__message');
// Change the message opacity
message.style.opacity = '0';
// Remove the message
setTimeout(() => document.querySelector('.todolist__message').parentElement.removeChild(message), 2000);
}, 2000);
}
Кто-нибудь возражает, объясняя, почему первый блок кода приводит кв сообщении, мгновенно исчезающем, а не в применяемом переходе css?
Спасибо
** См. ответ ниже, чтобы узнать, как удалить элементы после завершения анимации.