возможно, вам поможет intersectionobserver.
Он следит за тем, попал ли блок в область видимости (viewport), и насколько он виден от 0.1 до 1(но надо учесть, что при адаптиве на маленьком экране, а особенно - перевернутом, элемент может на 100 проц вообще не попасть на экран))).
либо можно отслеживать, насколько мы проскролили от верха сайта
window.addEventListener("scroll", ()=>{console.log(window.pageYOffset})
и подвязать эту величину к тому, насколько должны изменить свои координаты ваши обьекты.
Можно их изначально сдвинуть через css transform: translate(); и через js по мере приближения менять значение его.