我剛剛給自己回答了這個問題。我不想使用任何庫,因爲我只需要一個簡單的效果,而且我感覺解決方案應該很簡單,只要我想要一個簡單的結果即可。因此,首先談到SCSS混入(你可以用香草CSS做吧):
@mixin background-fixed($url) {
background-image: url($url);
background-repeat: no-repeat;
background-position: center;
background-size: auto 100vh;
}
你可以用大小和位置,雖然玩。但在我的愚見中,我給出了最常用的例子。接下來我們使用mixin來創建具有視差效果的造型塊:
#block-id {
@include background-fixed('/images/your_img.jpg');
}
接下來我們需要一些jquery腳本。 首先,讓我們創建一些功能,使我們的編碼器的生活更輕鬆:
function inVisibleRange(block) {
return ($(window).scrollTop() <= $(block).offset().top + $(block).outerHeight() && $(window).scrollTop() >= $(block).offset().top - $(window).height())
}
function parallaxScroll(block) {
if (inVisibleRange(block)) {
$(block).css('background-position-y', $(window).scrollTop() - $(block).offset().top + 'px');
}
}
最後,我們使用窗口滾動事件處理中此功能:
$(window).scroll(function() {
parallaxScroll('#block-id');
}
在這裏,我們有所需的視差背景效果。 但是正如你所看到的視差效果的速度等於滾動速度。 如果我們想自定義的視差效果的速度(這裏是一些街頭魔術),我們使用無非就是一個簡單的除法運算,並將其應用到background-position-y
計算:
($(window).scrollTop() - $(block).offset().top)/1.3
是的,我們失去了一些小零件在頂部和底部的圖像。但我覺得這是一個很好的黑客,不會以不好的方式影響外觀。用斧頭切割簡單。但是我們是否需要超級激光切割一棵小樹?那麼,我認爲,對於我來說,我當然更喜歡用很酷的激光器來切割它。但讓我們不要考慮這一點,並假裝像我的比喻是在正確的地方。
potentpages鏈接已關閉 – user2602152
謝謝您讓我知道。該鏈接現在應該被修復。 – David