【发布时间】:2020-08-30 11:55:12
【问题描述】:
我们有两个相似的宽度过渡,它们在中间被打断,并且它们的最终过渡值发生了变化。 它们之间的唯一区别是绿色框最终宽度与起始宽度完全相同,橙色框最终宽度与起始宽度不同。
这会导致绿框过渡更快,就好像它只是“撤消”初始过渡。
html:
<div id="reference"></div>
<div id="boxA" ></div>
<div id="boxB" ></div>
css:
#reference {
width: 100px;
height: 100px;
background-color: rgba(0, 204, 255, 0.5);
}
#boxA {
background-color: rgba(166, 255, 0, 0.5);
height: 100px;
transition: width 1s linear;
}
#boxB {
background-color: rgba(255, 136, 0, 0.5);
height: 100px;
transition: width 1s linear;
}
javascript:
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
document.getElementById("boxA").style.width = "100px";
document.getElementById("boxB").style.width = "100px";
(async () => {
await sleep(1000)
document.getElementById("boxA").style.width = "200px";
document.getElementById("boxB").style.width = "200px";
await sleep(500)
document.getElementById("boxA").style.width = "100px";
document.getElementById("boxB").style.width = "101px";
})()
- 当目标值更改时,在初始转换完成之前,使所有值的转换持续时间相同的最简单方法是什么?
- 起始值是唯一的特例吗?
- 在哪里可以找到这种奇怪行为的文档?
【问题讨论】:
-
boxA和boxB的转换速度 (1s) 相同。由于boxB在相同经过的时间里移动的距离更短,它需要比boxA移动得慢 -
@dillon 两个盒子都展开到相同的宽度,绿色盒子的收缩时间为 0.5,橙色盒子的收缩时间为 1s
-
嗯,是的,这确实是一种奇怪的行为,但看起来你在宽度上同时发生了多个转换,因为你没有等待它完成..也许这对你有帮助stackoverflow.com/questions/16376109/cut-a-css-transition-short ?
标签: javascript html css animation css-transitions