2

我正在使用服务器端图像通过 URL 动态调整大小,例如<img src="converter/500w/picture.jpg">. 这意味着我可以提供几乎无限数量的图像尺寸。现在我正在使用<img srcset="...">(以及<picture>标签)来提供各种或多或少随机选择的图像尺寸。但是,这会导致大量标记,并且不是很灵活。

  1. 是否可以使用srcset(或其他 HTML 标记)告诉浏览器如何请求任意大小的图像?如果没有,是否可以在所有浏览器中可靠地使用 JavaScript/jQuery 来做到这一点?

  2. 是否可以明智地决定要在您的srcset. 我在想与您的断点相关的宽度将是很好的候选者,但这并不能说明高 DPI 设备。

我意识到“无限”srcset是有代价的。服务器上的处理可能很繁重,但这在很大程度上取决于您的访问者(屏幕规格的数量和变化)。磁盘空间也是一个问题,但可以通过垃圾收集来缓解(尽管这会增加第一个问题的影响)。不过,我想知道这是否可能,如果没有,是否有明智的分辨率选择。

4

1 回答 1

1

不,你不能告诉浏览器一个特定的模式来请求不同的候选人。我也怀疑生成无限数量的候选图像是否有用。

您可以使用客户端为您完成工作的东西是以下脚本: https ://github.com/aFarkas/lazysizes/tree/gh-pages/plugins/rias

如果您有这么多资源,我还强烈建议您向 Retina 设备提供更高压缩的图像。这可以使用上面提到的 RIaS 插件(参见文档)或使用“压缩图片模式”来完成:

<picture>
<!--[if IE 9]><video style="display: none;"><![endif]-->
    <source
        srcset="image-w1600-q50.jpg 1600w,
            image-w1440-q50.jpg 1440w,
            image-w1200-q50.jpg 1200w,
            image-w800-q50.jpg 800w,
            image-w600-q50.jpg 600w,
            image-w400-q50.jpg 400w"
        sizes="(your sizes), 100vw"
        media="(-webkit-min-device-pixel-ratio: 1.9),
            (min-resolution: 1.9dppx)" />
    <source
        srcset="w1600-q80.jpg 1600w,
                image-w1440-q80.jpg 1440w,
                image-w1200-q80.jpg 1200w,
                image-w800-q80.jpg 800w,
                image-w600-q80.jpg 600w,
                image-w400-q80.jpg 400w"
        sizes="(your sizes), 100vw" />
<!--[if IE 9]></video><![endif]-->
<img
    src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
    sizes="(your sizes), 100vw"
    alt="picture but without artdirection" />
</picture>
于 2015-06-28T12:03:56.213 回答