我正在为图库所有者构建一个网站,每个网页都有很多图片。 因此我想懒得加载网页上的图像,进行初始加载 不那么沉重。但是,我想以“渐进增强”的方式实现这一点。
我发现了很多延迟加载方法,但它们都需要摆弄html代码
以这种方式,关闭javascript网页将无用。 (例如,src
标记的img
属性保持未设置状态,直到图像延迟加载为止。
为了逐步实现延迟加载方法,我认为需要以下内容:
src
属性保存在data-src
属性在这三个步骤中,第一步看起来最难。即使this stackoverflow discussion也没有提供不破坏渐进增强的答案。
有没有人有任何想法?
答案 0 :(得分:6)
由于没有人提出答案,我会发布我找到的合理解决方案。
此问题可归结为以下内容:虽然我们希望在打开javascript时阻止浏览器下载图像,但我们必须确保下载图像 当javascript被关闭或不可用时。
很难一直使用javascript来停止在页面上加载图片 以“正常”格式:
<img src="path/to/image.jpg"></img>
要停止下载图片,我们必须删除他们的src
属性,但要按顺序删除
要做到这一点,DOM应该已经加载。通过优化,现在很多浏览器都很难保证图像不会下载。
最重要的是,我们当然希望防止中断已经下载的图像, 因为这只是一种浪费。
因此,我选择使用以下解决方案:
<img data-src="path/to/image.jpg" class="lazy"></img>
<noscript>
<img src="path/to/image.jpg"></img>
</noscript>
请注意noscript
标记之外的图片不是src
而是data-src
属性。例如,懒惰加载脚本可以使用它来逐个加载图像。
仅当javascript不可用时,noscript
块内的图像才会出现
是可见的,所以不需要加载.lazy
图像(也没办法这样做,因为
javascript不可用)。
我们确实需要隐藏图像:
<noscript>
<style>
.lazy {
display: none;
}
</style>
</noscript>
与img
块中的noscript
标记一样,只有当javascript不可用时,此style
块才会对浏览器可见。
在相关的说明中:我认为我可以通过不在惰性图像上放置src
或data-src
属性来减少html大小。这很好,因为它消除了
来自页面的冗余网址,为我们节省了一些带宽。
我认为无论如何我都可以使用javascript从src
块中取出noscript
属性。但是,这是不可能的:
javascript无法访问noscript块的内容。因此,上述方案
我能想出的最有效率。