7

我正在使用带有响应图像的 Bootstrap。我想通过为浏览器提供多种图像尺寸来优化加载时间。根据这篇文章,像这样使用 srcset 的简单方法有利于让浏览器选择最佳图像尺寸:

<img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" alt="yah">

我的问题是,将它与 Bootstrap img-responsive类结合起来,即使只需要一张小图片,也会加载一张大尺寸的图片。

此处的代码示例:Bootply使用 Chrome 进行测试,它内置了对 srcset 的支持!(其他一些浏览器需要 picturefill.js 来识别它。)

如果您复制图像的源(或查看网络选项卡中的 Chrome 开发人员工具),您可以看到 750 宽度的版本被加载并调整为小图像,即使有更小的版本最适合利用。(如果加载图片填充 JS 以支持 img srcset,则在 IE 和 Firefox 中也会发生同样的情况。)

我究竟做错了什么?

4

1 回答 1

9

您需要使用该sizes属性告诉浏览器图像在您的设计中的宽度,否则默认为100vw(全视口)。

<img sizes="(max-width: 480px) calc(100vw - 10px), 480px" src="small.jpg" srcset="small.jpg 600w, medium.jpg 1000w, large.jpg 2000w" alt="yah" />

如果您可以在 CSS 中设置宽度,您还可以使用lazySizes自动sizes为您计算宽度。

使用惰性大小:

<img data-sizes="auto" class="lazyload" data-srcset="small.jpg 600w, medium.jpg 1000w, large.jpg 2000w" alt="yah" />
于 2015-02-07T09:04:08.780 回答