我很确定这是目前不可行的。
我有一个动画,其中涉及一个元素从绝对位置移动到内联位置。由于某些原因,我不知道容器的大小,也不知道我正在制作动画的元素的大小。
我需要知道的是转换后 HTML 元素的大小是多少,没有任何抖动的绘图。
这使问题变得非常困难(可能无法撤消),因为我无法知道添加元素是否会调整父元素的大小,或者调整元素本身的大小。
我需要的是一种展望未来的方法。
const byId = (id) => document.getElementById(id);
#container {
height: 3em;
min-width: 50%;
background: teal;
}
#mystery {
background: purple;
}
<div id="container">
<div id="mystery">Some Text</div>
</div>
<button onClick='byId("mystery").style.position = "relative"'>Position Relative</button>
<button onClick='byId("mystery").style.position = "absolute"'>Position Absolute</button>
目前,这些是我能想象的唯一解决方案(它们都很荒谬):
克隆整个网页的HTML,让克隆拥有
opacity: 0; pointer-events: none
并暗中渲染未来。捕获当前页面的绘制数据(基本上是截图),覆盖那个同时偷偷修改页面,get my future,还原,去掉截图覆盖。
与第 2 点类似,有没有办法❄️freeze❄️ 将页面渲染 3-4 帧?
我记得很久以前见过一个“尺寸工人”。现在找不到任何关于它的信息,但似乎它可能有用?