Я поставлен в тупик на этом. У меня есть эффект параллакса на моем сайте, который отлично работает, но он переходит на начальную прокрутку. Я предполагаю, что функция ниже не вычисляет правильную высоту моего окна просмотра, пока не начнется прокрутка ... Я оставляю эту функцию профессионалам на SO. Спасибо.
$.fn.is_on_screen = function(){
var win = $(window);
var viewport = {
top : win.scrollTop(),
left : win.scrollLeft()
};
//viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.outerheight();
var bounds = this.offset();
//bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
function parallax() {
var scrolled = $(window).scrollTop();
$('.lb-content__item').each(function(){
if ($(this).is_on_screen()) {
var firstTop = ($(this).offset().top);
var $span = $(this).find(".lb-content__item-title");
var moveTop = (firstTop-winScrollTop)*.2 //speed;
$span.css("transform","translateY("+moveTop+"px)");
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
var $zoom = $(this).find(".lb-content__item-img");
var zoomTop = (firstTop-winScrollTop)*.06 //speed;
$zoom.css("transform","translateY("+zoomTop+"px)");
} else {
var $zoom = $(this).find(".lb-content__item-img");
var zoomTop = (firstTop-winScrollTop)*.35 //speed;
$zoom.css("transform","translateY("+zoomTop+"px)");
}
}
});
}
$(window).scroll(function(e){
winScrollTop = $(this).scrollTop();
parallax();
});