Demo of the problem: https://jsfiddle.net/t0qsek8n/1/
<div class="test" id="test">Test text</div>
.test {
position: relative;
top: 0px;
border: 1px solid #ccc;
animation: test 5s;
transition: top 1s;
}
@keyframes test {
0% {
opacity: 0;
transition: none;
}
100% {
opacity: 1;
transition: none;
}
}
const test = document.getElementById('test');
setTimeout(() => {
test.style.top = "100px"
}, 1000);
I expect if the value of top
property is changed by JS, transition transition: top 1000ms
doesn't happen because of transition: none
that provides @keyframes test
, but actually, the transition happens.
I cannot understand why transition
value from keyframes
doesn't override any existing definition for transition
.