我制作了一个看起来可以接受的网站,并且在合理的加载时间和不过度压缩 JPEG 图像之间取得了平衡。一个问题是,有一个 100% 拉伸的全屏背景,虽然在 13 英寸显示器上看起来不错,但在 5K 视网膜显示器上可能会显得丑陋。不过,我不能证明为移动用户提供巨大的图像而让他们受苦。我正在寻找的是一个“延迟加载程序”或“延迟加载程序”,它将检测显示尺寸和像素密度(视网膜与非视网膜)并提供可能的最高质量图像 - 但只有在所有网站内容都已经使用适度压缩的图像加载并处于可浏览状态。如果可能的话,我希望高分辨率换入图像在它们覆盖并替换默认分辨率图像时进行淡入过渡。
目标/步骤
- 使用适度压缩的图像快速加载基本页面。该页面现在可以进行交互并且看起来并不可怕。当搜索引擎蜘蛛页面时,在这个阶段应该被认为是完全加载的,否则页面排名可能会受到影响。
- 检查设备显示尺寸和像素密度以了解要换入的分辨率图像。
- 以适当的分辨率提供图像,但在它们完全加载并准备好淡入之前将它们隐藏起来。
- 淡入高分辨率图像。(淡入不需要跨图像同步,每个图像都可以在准备好时淡入其低分辨率对应部分)
我在祈求奇迹吗?我应该放弃并坚持使用平庸的压缩图像吗?我不可能是唯一一个想要这样做的人,所以我试图找出可用的技术。
我在网上找到了一些零碎的答案,但我在任何地方都没有看到将它们联系在一起的解决方案。似乎没有处理此问题的“最佳实践”,这令人惊讶。如果您在视网膜设备上查看他们的网站,我知道 apple.com 会提供视网膜图像,但我不知道他们是如何做到的(例如:存储照片)。我找到了一个延迟加载视网膜图像的脚本(在jsfiddle上,所以我不会用代码链接和混乱这篇文章),但它是由滚动触发的,我不知道如何重新编写代码以加载它们之后而是页面内容。这是另一个惰性加载器使用 jQuery 虽然我无法让它为我工作,而且我不知道如何让它在页面内容之后加载,也不知道如何让图像淡入现有的低-res 的,我也不知道如何结合视网膜显示检测。
没有太多 javascript 知识的人是否有希望使用一些现有的代码来实现这一点,或者我应该继续在 Lowres Land 的微薄存在吗?
编辑:我认为比“延迟加载”更相关的术语可能是“延迟加载”。我发现延迟加载通常是指向下滚动页面时呈现的内容。我已经完善了我的搜索。将在这里发布任何发现。我目前正在阅读这篇文章,但还没有完全消化。
Edit2:我认为 jQuery 的 deferred 和 fadeIn 一起(与视网膜的媒体查询)可能是答案。我在 jQuery 文档中找到了一个看起来像我想要的变体的示例。但就将这一切联系在一起而言,我的想法太过分了。