Я пытаюсь нейтрализовать корректировку высоты элемента, которая выше смещения прокрутки, вычисляя разницу в высоте и затем обновляя текущую позицию прокрутки, чтобы учесть это.
Проблема в том, что я не могу предотвратить очень быстрый мерцающий артефакт. Регулирую ли я высоту элемента и затем положение прокрутки, или наоборот, я не могу предотвратить быстрый визуальный прыжок.
Кто-нибудь знает, как это можно преодолеть? Я хочу, чтобы эти операции выполнялись одновременно без промежуточного рендеринга, но я не уверен, возможно ли это.
// Setup
...
var myElement = ...
var oldHeight = ...
var scrollOffset = window.scrollY;
var newHeight = 100;
var diff = newHeight - oldHeight;
// Determine if we need to counteract new size
var adjustScroll = (absoluteOffset(myElement) < scrollOffset);
// Adjust size
myElement.style.height = newHeight+'px';
// Adjust scroll to counteract the new height
if (adjustScroll) window.scrollTo(0, scrollOffset+diff);
Я работаю с WebKit, особенно на iOS.