【问题标题】:Native lazy-loading (loading=lazy) not working even with flags enabled即使启用了标志,本机延迟加载 (loading=lazy) 也无法正常工作
【发布时间】:2020-01-05 06:32:12
【问题描述】:

我目前正在尝试使用新的 loading="lazy" 属性更新我的网站,如下所示:https://web.dev/native-lazy-loading

正如视频中所见,一切都按预期工作,但与我在 chrome 中的瀑布图相比,它没有。

外观:

应该是什么样子:

这是它的实现方式:

<img class="has-border" src="https://andreramoncombucket.s3.amazonaws.com/static/assets/img/work/personal-website/pw_full.jpg" style="object-fit: cover;" alt="..." loading="lazy">

【问题讨论】:

  • 你解决了吗?
  • 显然不是..
  • 我遇到了同样的问题。
  • 我正在经历同样的事情。奇怪的是,如果我完全删除我的样式表,延迟加载会按预期工作。我很好奇您是否会看到相同的行为。编辑:原来我的页面不够长,无法延迟任何图像。我在移动设备上试用过,它按预期工作。

标签: html image google-chrome lazy-loading


【解决方案1】:

我在尝试实现它时遇到了类似的问题。

我默认使用 Chrome,但它无法正常工作。当我在 Firefox 中测试它时,它确实有效。这让我觉得是浏览器的问题。

在深入挖掘之后,我发现了我的案例的“问题”。对许多其他人来说可能也是如此。

事实证明,在加载标记为惰性的图像时,Chrome 比 Firefox 更不耐烦。这意味着它会更早地加载图像,因此当图像出现在屏幕上时不会加载图像,但会更早。 另一方面,Firefox 几乎在图像即将显示在屏幕上时加载图像。

我正在测试的图片在首屏,但页面不是很长,所以 Chrome 还是在加载图片。

当我在一篇更长的文章中尝试它时,文章深处的图像确实也懒惰地在 Chrome 中加载。

希望这会有所帮助!

【讨论】:

【解决方案2】:

我也遇到过类似的问题,经过一番研究,我找到了解决办法:

只需要给IMG标签加上宽度和高度,这是因为浏览器在应用延迟加载之前需要知道元素的大小。

您的代码:

<img class="has-border" src="..." style="object-fit: cover;" alt="..." loading="lazy">

添加宽度和高度后的代码:

<img class="has-border" src="..." style="object-fit: cover;" alt="..." loading="lazy" width="200px" height="200px">

另一种选择是使用内联样式:

<img class="has-border" src="..." style="object-fit:cover; height:200px; width:200px;" alt="..." loading="lazy">

考虑到我只是将 IMG 标记的尺寸随机设置为 200 像素。 你可以找到更多关于这个web.dev article的信息

希望对你有帮助?

【讨论】:

    【解决方案3】:

    最糟糕的原因是它不起作用 - 我忘记添加 width 和 height 属性(它们在我损坏的代码中被添加为 styles)

    【讨论】:

    • 这可能是一个原因,因为 chrome 需要知道图片的确切尺寸以避免在图像加载时跳转
    【解决方案4】:

    图像应定位为“相对”的样式。

    【讨论】:

    • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2017-02-01
    • 2017-10-08
    相关资源
    最近更新 更多