Чего я хочу добиться, это изменить некоторое свойство (background-color
в коде выше) дважды из js, чтобы переход между ними выполнялся, но не от предыдущего состояния до первого. Код выше почти никогда не работает, потому что тайм-аут установлен на ноль, он работает почти всегда, когда он установлен как минимум на 10, и он всегда работает на моей машине, когда я устанавливаю его на 100. То, что я также хочу, - это полностью исключить таймауты и эфир запускайте код линейно или на основе соответствующего обратного вызова события (я пока не нашел полезного).Переход CSS с чистым JS без задержки
Вот пример (also on jsFiddle):
var outter = document.getElementById('outter');
var test = document.getElementById('test');
test.onclick = function() {
outter.removeChild(test);
test.style.backgroundColor = 'green'
outter.appendChild(test);
setTimeout(function() {
test.style.backgroundColor = 'red'
}, 0);
}
#test {
position: fixed;
left: 2em;
right: 2em;
top: 2em;
bottom: 2em;
background-color:red;
transition-duration: 2s
}
<div id=outter>
<div id=test></div>
</div>
Так по щелчку, вы хотите, чтобы фон немедленно зеленеть, а затем провести две секунды перехода от зеленого до красного? –
@ T.J.Crowder Точно! Самое главное здесь слово «немедленно» – Grief
Я не понимаю, желая перейти от A к B сразу, а от A до B, но с задержкой. Вы уже на B. – Crowes