[英]How to load an onScroll background image before user scrolls to them?
當用戶滾動到該div的末尾時,我正在更改div的背景。 由於它是固定的背景,我不使用HTML <img>
標簽,而是使用CSS background-image:
. 使用以下JavaScript
函數,它在我需要時成功更改背景,並在用戶滾動回頂部時恢復。
function transimg(divid,imgurl1,imgurl2) {
$(window).scroll(function(){
var st = $(this).scrollTop();
var dist = $(divid).offset().top - 50;
if(st > dist) {
$(divid).css("background-image", "url(" + imgurl1 +")");
}
else{
$(divid).css("background-image", "url(" + imgurl2 +")");
}
});
}
顯然,當用戶滾動到該偏移時,這會加載圖像。 當我托管網站並且用戶連接速度慢時,這會使它變慢。 所以我需要在頁面開始加載時加載第二個圖像。 與Lazy Load相反。 我怎樣才能實現這一目標?
我真的不想使用任何插件。
任何幫助表示贊賞,提前謝謝!
您可以在加載前加載它們。 (在您body
的末尾添加腳本)。
說明:創建Image
並設置src
屬性時,映像文件將下載到瀏覽器。
var images = ['img1', 'img2'];
for (var i = 0; i < images.length; i++) {
var img = new Image();
img.src = images[i];
}
您可以將2個background-images
添加到divid
,因此它們都會在頁面刷新時加載,然后使用JQ在background-images
之間切換,具體取決於滾動。
請參閱下面的代碼段。 讓我知道它是否有幫助(我檢查網絡,並在頁面刷新時加載兩個圖像)
$(window).scroll(function(){ var st = $(this).scrollTop(); var dist = $("#container").offset().top - 50; if(st > dist) { $("#container").css("background-image", "url(" + "http://i.imgur.com/AsqlqnG.jpg" +")"); } else{ $("#container").css("background-image", "url(" + "http://i.imgur.com/I8170KA.jpg" +")"); } });
#container { background-image : url("http://i.imgur.com/I8170KA.jpg"),url("http://i.imgur.com/AsqlqnG.jpg"); background-size:contain; background-repeat:no-repeat; height:800px; width:100%; margin-top:50px; position:relative; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id ="container"> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.