幫我理清了添加簡單視差行爲的正確邏輯。視差 - 偏移元素,與滾動相關
我想在頁面上有多個元素,它們的頂部偏移一定的距離(例如300px)。然後,當您向下滾動頁面時,一旦顯示元素的頂部,它將緩慢向上移動(連接到滾動),直到元素的頂部到達視口的中間,此時它的頂部偏移量爲0並保持原位。
我嘗試使用第三方腳本(滾動魔術,星等),但是當我無法得到它,現在我想自定義代碼:
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 ?
}
}
});
});
感謝您的幫助,關於併發的想法!你的演示看起來不錯,但它應該停止在最終位置,一旦進入框架50%並停止移動。所以一旦它滾動到位,當你向下滾動時,它們仍然粘在一起。基本上只顯示,不做任何事。 –
對不起,以爲它是「直到元素的頂部到達視口的中間,此時它的頂部偏移量爲0,並且它保持原位」。無論如何,請不要急於求助,花點時間欣賞幫助。它非常接近。 –
@LouisW添加了一個演示,一旦兩個元素觸摸就保留0 Y位置! –