Я почти уверен, что это в настоящее время невозможно.
У меня есть анимация, которая включает в себя перемещение элемента из абсолютной позиции во встроенную. По причинам, я не могу знать, как размер контейнера, или как размер элемента, который я анимирую.
Что мне нужно знать, это то, что будет размер элемента 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
и отобразить то, что будет в будущем.
Захватить данные рисования текущей страницы (в основном снимок экрана), наложите его, тайно изменяя страницу, получите мое будущее, отмените и удалите накладной снимок экрана.
Как и в случае с номером 2, существует ли способ «заморозить» рендеринг страница для 3-4 кадров?
Я помню, как видел "калибровочного работника" что-то, или, скорее, долгое время go. Не удалось найти информацию об этом сейчас, но кажется, что это может быть полезно?