【问题标题】:Order of loading images in html and css在 html 和 css 中加载图像的顺序
【发布时间】:2011-01-26 06:54:45
【问题描述】:

我能否以编程方式(或者,正如我们所说的 htmlcss,从语义上)决定图像的加载顺序?

我想先加载背景图片,然后在$(window).load 上调用 som javascript,将其留在浏览器上是否足够(例如 body-background 在线 40,其他图片稍后在 css 文件中)或我是否必须使用 javascript(如果是,是否有一些简单的解决方案?)

谢谢。

编辑:原因是我可以在加载图像时显示通知“正在加载...”,但首先加载的部分至少没有看到背景就没有意义,所以背景先加载。

【问题讨论】:

    标签: javascript html css image


    【解决方案1】:

    我发现这是一个有效的技巧:

    1. 使用您在 DOM 中早期放置的 JS 预加载您的图像:

      <script type="text/javascript">
          (new Image()).src="../img/loader.gif";
      </script>
      
    2. 将要首先加载的元素放在 CSS 中尽可能高的位置

    3. 通过将 CSS 放在 DOM 中的较高位置,尽早加载 CSS

    【讨论】:

      【解决方案2】:

      您可以在第一个图像上使用 onload 事件来加载下一个图像)等等。

      img1.src = 'url1';
      img1.onload = function(){
        ...
        img2.src = 'url2';
        img2.onload = function(){
          ...
        }
      }
      

      【讨论】:

      • 如果您足够聪明,可以在浏览器中禁用 JavaScript,那么您也足够聪明,可以在您选择的网站上查看丰富的内容 :)
      • @MichaelButler,谢谢,下次有人用“没有 JS 用户”来打我时,我会使用这句话
      • 它有点旧,但这里的风险是 img1 失败。你可以做的是在每个加载图像(以及失败的)图像上都有一个计数器标志,然后按顺序显示它们
      【解决方案3】:

      没有可靠的方法。使用 JavaScript 意味着对于禁用脚本的用户或不支持它的浏览器的用户,图像永远不会加载。

      页面的几乎所有外部资源(脚本除外)都是异步加载的,从浏览器解析它们开始。这意味着它很可能首先加载较小的文件,而较大的文件需要更长的时间来下载和显示。

      sprite 可能会将所有较小的图像合并为一个图像,这会使文件大小变大,因此它们会同时显示(而不是连续显示),但我不会全心全意推荐它用于任何普通页面。该过程仅涉及调整背景位置以仅显示您想要从集合中获得的图像。如果集合大小大于背景图像并且背景图像首先开始下载,则背景很有可能会在图像之前呈现。

      【讨论】:

      • 我实际上成功地使用了 Sprite 技术,将颜色相似的图像分组为 PNG-8 :)
      【解决方案4】:

      如何使用 javascript 动态加载图像?然后你就可以确定它是按哪个顺序加载的。确保首先加载脚本。

      【讨论】:

      • 关闭 JavaScript 的用户将永远看不到它们。
      • @Andy E - 是的,这就是问题
      • 大多数用户(对不起)不够聪明,无法关闭 java 脚本,一些浏览器 safari 和 android 浏览器使其成为一项真正的任务
      【解决方案5】:

      浏览器的解析引擎一找到url就开始请求图片,但不保证在其他资源下载完成之前就下载了。我不知道为什么你需要在加载其他资源之前完全下载背景?

      哦,一旦下载了所有资源,就会触发整个文档的 onload 事件。

      【讨论】:

      • 原因是我可以在加载图像时显示通知“正在加载...”,但首先加载的部分至少没有看到背景就没有意义。
      猜你喜欢
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多