Удар моей головы, пытаясь разобраться в правильной логике для добавления простого поведения параллакса.
Я хотел бы иметь несколько элементов на странице, которые начинаются со своего верхнего смещения на определенное расстояние (например, 300 пикселей). Затем, когда вы прокрутите страницу вниз, как только появится верхняя часть элемента, она медленно сдвинется вверх (привязана к прокрутке) до тех пор, пока верхняя часть элемента не достигнет середины окна просмотра, в это время верхнее смещение будет 0, и оно останется на месте.
Я пробовал использовать сторонний script (Scroll Magic, Stellar и т.д.), но когда я не смог получить его прямо сейчас, я пробовал собственный код:
https://jsfiddle.net/louiswalch/5bxz8fku/1/
var $Window = $(window);
var offset_amount = 400;
var window_height = $Window.height();
var window_half = (window_height/2);
var sections = $('SECTION.reveal');
sections.each(function() {
var element = $(this);
// Make sure we always start with the right offset
element.css({top: offset_amount});
$Window.bind('scroll', function() {
var viewport_top = $Window.scrollTop();
var viewport_middle = viewport_top + (window_height/2)
var viewport_bottom = viewport_top + window_height;
var element_top = element.offset().top;
if (element_top > viewport_top && element_top <= viewport_bottom) {
var distance_to_middle = (element_top - viewport_middle);
var amount_to_middle = (distance_to_middle / window_half);
console.log(amount_to_middle);
if (amount_to_middle >= 0) {
element.css({top: (offset_amount * amount_to_middle)+ 'px'});
} else {
// ? Lock to end position ?
}
}
});
});