Да, это возможно.Соответствующее свойство объекта, возвращаемое getComputedStyle
, будет постепенно меняться в течение перехода, как показано в этой демонстрации:
const box = document.getElementById('box'),
turnBlueButton = document.getElementById('turnblue'),
turnPinkButton = document.getElementById('turnpink'),
computedStyleValueSpan = document.getElementById('computedstylevalue');
turnBlueButton.onclick = () => {
box.classList.add('blue');
box.classList.remove('pink');
}
turnPinkButton.onclick = () => {
box.classList.add('pink');
box.classList.remove('blue');
}
const computedStyleObj = getComputedStyle(box);
setInterval(() => {
computedStyleValueSpan.textContent = computedStyleObj.backgroundColor;
}, 50);
#box {
width:50px;
height:50px;
transition: background-color 10s;
}
.pink {
background: pink;
}
.blue {
background: blue;
}
<div id="box" class="pink"></div>
<p>
<code>getComputedStyle(box).backgroundColor:</code>
<code><span id="computedstylevalue"></span></code>
</p>
<button id="turnblue">Turn blue</button>
<button id="turnpink">Turn pink</button>
Это поведение требуется спецификацией.https://www.w3.org/TR/css-transitions-1/#transitions- состояния:
Вычисленное свойство свойства со временем переходит от старого значения к новому.Поэтому, если скрипт запрашивает вычисленное значение свойства (или других данных, зависящих от него) во время его перехода, он увидит промежуточное значение, представляющее текущее анимированное значение свойства.
(Шляпа для https://stackoverflow.com/users/27862/user123444555621 за их комментарий, указывающий на соответствующий отрывок спецификации.)