代码之家  ›  专栏  ›  技术社区  ›  Ali Özen

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

  •  2
  • Ali Özen  · 技术社区  · 6 年前

    我有一个背景图片和很多产品图片。很快,整个页面的%88是图像。但当我刷新页面时。一些产品正在展出。之后我的背景就来了。然后其他的div,图片也来了。

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

    我试过的: 我将背景图像div替换到dom的顶部。没用。

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

    也没用。

    我以前试过几次。但我还是有同样的问题。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Laurent B    6 年前

    首先,你需要知道 全部的 您的图像已加载。或者最好是当你想要的所有图像都显示在第一位。

    然后我看到两个选择。对于这两种情况,我将使用一个库来帮助检测何时加载了图像: 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 empty或指向blank image),然后更改图像的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" />
        2
  •  0
  •   M.Sofien    6 年前

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

      #theBackgroundImage{
      background : url(..)
      }
    

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