Здравствуйте, подскажите, пожалуйста. Вот есть, например, какой-то блок посередине страницы. И нужно чтобы он при скролле, когда попадает в поле видимости, постепенно сдвигался примерно на 50px вверх, если пользователь скроллит вниз, и на 50px вниз, если пользователь скроллит вверх. Но чтобы сдвигался не сразу а постепенно, вместе с прокруткой страницы пользователем. Тоесть как обычный параллакс фона, только блока.
Подскажите, как такое лучше сделать, какие плагины использовать?
Примерно такой скрипт можно написать
var paralax = document.getElementById("paralax");
/* коэфициент сдвига: 1 сдвиг равный смещению по оси Y, 0 без сдвига */
var moveCoef = 0.5;
window.addEventListener("scroll", scroll);
window.addEventListener("resize", scroll);
scroll();
function scroll() {
/* берём огнаничивающий прямоугольник паралакса относительно окна (фрейма) */
var r = paralax.getBoundingClientRect();
/* центр паралакса */
var paralaxYCenter = r.y + r.height / 2;
/* центр экрана */
var scrollYCenter = window.innerHeight / 2;
/* Вычисляем смещение */
var move = (paralaxYCenter - scrollYCenter) * moveCoef - 100;
paralax.style.backgroundPositionY = move + "px";
}
#paralax {
background: url(https://i.stack.imgur.com/GU2R1.jpg);
width: 400px;
height: 200px;
background-size: 180%;
}
.space1 {
height: 160px;
}
.space2 {
height: 800px;
}
body {
display: flex;
flex-direction: column;
align-items: center;
}
<div class="space1">Скролируй ниже</div>
<div id="paralax"></div>
<div class="space2"></div>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости