【发布时间】:2016-11-11 22:16:56
【问题描述】:
我想要实现的是从 js 更改某些属性(上面代码中的background-color)两次,以便在它们之间运行转换,但不会从前一个状态到第一个状态。上面的代码几乎从不工作,因为超时设置为零,它几乎总是在它设置为至少 10 时工作,当我将它设置为 100 时它总是在我的机器上工作。我还想要的是完全避免超时和以太线性或基于适当的事件回调运行代码(到目前为止我没有发现任何有用的)。
这是一个示例 (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 没错!这里最重要的是“立即”这个词
-
我不明白,想立即从 A 过渡到 B,然后从 A 过渡到 B,但有延迟。你已经在 B 了。
-
为什么要从 DOM 中删除
test,然后在将其添加回 DOM 之前更改其颜色? -
@Crowes 从任何地方到 A 没有延迟,然后从 A 到 B 有动画
标签: javascript css css-transforms