Параллакс элементов при скролле

274
29 марта 2018, 06:54

Здравствуйте, подскажите, пожалуйста. Вот есть, например, какой-то блок посередине страницы. И нужно чтобы он при скролле, когда попадает в поле видимости, постепенно сдвигался примерно на 50px вверх, если пользователь скроллит вниз, и на 50px вниз, если пользователь скроллит вверх. Но чтобы сдвигался не сразу а постепенно, вместе с прокруткой страницы пользователем. Тоесть как обычный параллакс фона, только блока.

Подскажите, как такое лучше сделать, какие плагины использовать?

Answer 1

Примерно такой скрипт можно написать

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>

READ ALSO
Как правильно составить данный sql запрос?

Как правильно составить данный sql запрос?

Нужно выбрать сгруппированные по IP записи за последнюю минуту и DateTime, где одинаковые IP и DateTime, но разные RequestURIТ

364
Необходимо исправить запрос из питона в БД mysql

Необходимо исправить запрос из питона в БД mysql

Есть код для добавления в mysql:

279
MYSQL уникальное текстовое поле

MYSQL уникальное текстовое поле

Здравствуйте, возможно ли сделать уникальное текстовое поле в Mysql?

357
MYSQL разделить значения фраз

MYSQL разделить значения фраз

Добрый вечер! Нужна помощь, как в MySQL вывести из столбца значения, которые перечислены через запятую (4374,817969,63991,102124,2272,575180,723988,736205,662996,786018) в каждую...

317