我正在尝试使用标签srcset
和标签。sizes
img
虽然我认为我已经掌握了基础知识——主要归功于这篇文章——但我在该sizes
属性的实际应用中苦苦挣扎。
在我能找到的所有示例中,事情都被大大简化了,并且 size 属性被声明为好像在每个断点处,图像宽度将是视口宽度的精确比例,允许使用vm
单位。例如:
sizes="(min-width: 36rem) 33.3vw,
100vw"
当然,在现实生活中,图像通常位于其他容器中,而这些容器本身可能位于其他容器中等等,每个容器都有自己的边距、填充或定位。
公平地说,除了最简单的情况(当图像具有流体宽度并且不仅仅是视口的确切百分比时),calc
必须使用,这可能会在 html 标记中添加极其复杂的计算,因为图像尺寸需要从视口宽度开始计算,通过任何容器到图像?例如,您将如何计算位于具有 7px 填充的容器的图像的正确大小,该容器本身位于其容器的 45% 的容器内,具有 15px 边距的边栏位于主页面容器的 25% 内15px 的填充,最小宽度为 1220px?
sizes="(min-width: 36rem) calc(((((1220px - (2 * 15px) * 25%) * 45%) - (2 * 15px) - (2 * 7px)),
100vw"
试图在 size 属性中计算这一点似乎很可笑,尤其是考虑到所有这些都可能在每个断点处发生变化。必须让这种大规模复杂的计算与 CSS 的更改保持同步似乎很疯狂。然后你有不完整的浏览器支持calc
。
我觉得我错过了一些明显的东西,但它是什么?
注意:我知道 Alexander Farkas 出色的Lazy Sizes,它通过使用data
属性为您计算尺寸,但我对标准用法感兴趣。