加载特定图像,然后加载整个页面

Load specific image, then load the entire page

我有一张背景图片和很多产品图片。很快,整个页面的 %88 是图像。但是当我刷新页面时。部分产品正在展示。之后我的背景来了。然后其他divs,图片来了。

我想做的是我的背景图片放在第一位。然后必须显示其他人。同步或异步并不重要。

我尝试了什么: 我将我的背景图片 div 替换到了 dom 的顶部。没用。

window.onload=function () {
document.getElementById("theBackgroundImage").style.visibility = "visible";
}

也没有用。

我之前尝试过几种方法。但我仍然有同样的问题。

尝试将以下内容移至 css 文件的顶部

  #theBackgroundImage{
  background : url(..)
  }

也许您需要使用(延迟加载图像)=> url

首先,您需要检测所有 图像何时加载。或者最好是当您想要的所有图像首先显示时。

然后我在这里看到两个选项。对于两者,我将使用一个库来帮助检测何时加载图像:https://imagesloaded.desandro.com/

第一个选项

只显示您的图像。

imagesLoaded( 'img', function() {
  document.querySelectorAll(".displayAfter").forEach(e => e.style.visibility = 'visible'
  )
});
.displayAfter {
  visibility : hidden;
}
<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>

Image here :
<img width="50px" height="50px" src="https://picsum.photos/50/50?random" />
Lazy loaded image here :
<img class="displayAfter" width="50px" height="50px" src="https://picsum.photos/50/50" />

第二个选项

不要先加载您的图像(例如 src 为空或指向空白图像)然后更改图像的 src 属性。在这里,我在图像中使用了一个 data-src 属性,一旦加载了所有其他图像,我只需将其插入到图像 src 属性中。

imagesLoaded( 'img', function() {
  document.querySelectorAll(".displayAfter").forEach(e => 
    e.setAttribute('src', e.getAttribute('data-src'))
  )
});
<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>

Image here :
<img width="50px" height="50px" src="https://picsum.photos/50/50?random" />
Lazy loaded image here :
<img class="displayAfter" data-src="https://picsum.photos/50/50" width="50px" height="50px" />