【发布时间】:2020-05-07 20:17:50
【问题描述】:
使用下面的代码,我正在尝试实现这一目标:
- 允许浏览器在 WEBP
<source>和 JPEG in<img>之间进行选择(作为后备) - 如果视口宽度 >1058px,则将图像显示为 754px 宽,或者,对于较小的视口,自动选择五个图像之一并拉伸到视口宽度。
- 具有
<img>的src属性,它指向低分辨率延迟加载版本 -
为 SEO/UX 原因指定 HTML 中图像的
width和height(更多内容见下文)。<div> <picture> <source type="image/webp" data-srcset=" image_100.webp 100w, image_200.webp 200w, image_400.webp 400w, image_600.webp 600w, image_754.webp 754w" data-sizes="(min-width: 1058px) 1000px, 100%" /> <img data-srcset=" image_100.png 100w, image_200.png 200w, image_400.png 400w, image_600.png 600w, image_754.png 754w" data-sizes="(min-width: 1058px) 1000px, 100%" src="image_min.png" width="1000" height="300" alt="image_alt" /> </picture> </div>
你问为什么会有data- 前缀?我想使用延迟加载脚本,它会在应该显示图像的正确时间删除它们。
在延迟加载脚本启动之前,浏览器将忽略<source> 元素,因为此时正确的srcset 和sizes 将不存在。浏览器还将忽略<img> 中的data-srcset 和data-sizes,因此将显示src 中定义的低分辨率/占位符图像。
知道图像尺寸和 w/h 比,我还想以 HTML 格式提供这些,以便浏览器知道在加载期间为图像保留什么空间,在图像之前已加载,以防止重新渲染。
简单地将图像的绝对值设置为style或<img>的width和height属性,仅对视口宽度>1058px有效。否则,尺寸是相对于视口大小的。所以,我想告诉浏览器,图片的宽度和高度分别为父 <div> 宽度的 100% 和 30%,这在所有情况下都有效。
我知道有一个 css padding-top 技巧,可以保持 div 的纵横比,但我不确定我是否可以在这个场景中使用它,因为它实际上会在图像上方创建一个填充。
关于设置后备图像尺寸的任何其他想法?
【问题讨论】:
-
您绝对可以使用填充技巧 - 但您需要将图像绝对定位在包装 div 内 - 这样它就不会在图像上方创建填充 - 仅用作占位符。
-
@ajobi,你是对的,当
<div>是<img>的父级时,填充技巧有效。但是,我无法让它与<picture>一起使用。 -
您能创建一个沙盒示例吗? jsfiddle什么的。我以后可能会检查它
-
@ajobi,对不起,我的错。我一定搞砸了我的代码。
padding-tophack 甚至可以在<picture>中使用<img>。所以谢谢你! -
酷!恭喜
标签: html css responsive-design responsive-images srcset