Mantenimiento de la posición relativa de desplazamiento en el tamaño de la ventana

Tengo un documento html largo. Cuando se cambia el tamaño de la ventana, trato de mantener la posición de desplazamiento relativa mientras el contenido se vuelve a filtrar. Por ejemplo, si la parte superior de la página está en un párrafo en la mitad de la página, después de reducir la ventana a la mitad de su ancho, quiero mantener el párrafo en la parte superior de la ventana.

Actualmente, he intentado usar js para mantener el desplazamiento de desplazamiento relativo: https://jsfiddle.net/54xh3Ldy/1/

let pageHeight = 0 window.onload = () => { pageHeight = document.body.getBoundingClientRect().height } window.addEventListener('resize', () => { const currentOffset = window.scrollY const newPageHeight = document.body.getBoundingClientRect().height const dHeight = newPageHeight / pageHeight window.scrollTo(0, currentOffset * dHeight) pageHeight = newPageHeight }, true) 

Este tipo de trabajo funciona, pero está bastante nervioso. ¿Hay un mejor enfoque?