【发布时间】:2014-07-24 09:31:14
【问题描述】:
我一直在寻找(未成功)在使用<picture> 的 HTML5 规范时延迟加载图像的可靠方法。目前大多数解决方案/插件都依赖于使用data- 属性。我可能是错的,但这种方法似乎不能与<picture> 结合使用。
我真的只是希望被指向正确的方向。如果有人有他们目前正在使用的解决方案,我很乐意看到。谢谢!
这是 HTML5 规范的标准标记:
<picture width="500" height="500">
<source media="(min-width: 45em)" src="large.jpg">
<source media="(min-width: 18em)" src="med.jpg">
<source src="small.jpg">
<img src="small.jpg" alt="">
</picture>
【问题讨论】:
-
你能显示你的标记吗?通过延迟加载,您的意思是“在视口中加载”?您找到了哪些方法,能否请您发布一个并说明如何将其应用于
<pictures>(以及为什么不起作用)? -
是的,对不起,我做了假设。通过延迟加载图像,我的意思是当它们在视口中时。我见过的最常见的图片解决方案是Lazy Load plugin for jQuery。
-
嗯,that plugin is no magic。您可以轻松地将其调整为与图片中的
<source>元素一起使用,而不是使用 img 的src属性。 -
@MrRay 我不知道浏览器如何解析(或将解析)
<picture>标签,但最有可能在 html 解析期间加载合适的图像(就像他们目前对<img>标签所做的那样),所以阻止它的唯一方法是在<source>标签中使用data-src属性而不是src。但即使在这种情况下也存在一些问题,所以在 LazyLoadXT 中我们开始使用<br>标签而不是<source>:ressio.github.io/lazy-load-xt/demo/picture.htm(我不记得<source>标签到底有什么问题,但那样在某些浏览器中无法使用,而<br>可以) -
谢谢@DenisRyabov。是的,这正是我要解决的问题。我见过这个插件——它是唯一解决这个问题的插件。现在我明白为什么它使用
<br>标签了!
标签: javascript html image lazy-loading