有没有办法阻止这些图片在移动设备上加载到
增加性能/加载时间?
是的。
srcset 属性明确用于根据上下文下载不同的图像文件。
需要注意的是,您需要为每个环境声明一个图像(或后备)。
但这不会阻止您将 equivalent-to-null 图像(即 1x1 像素透明 png)用作您的后备,使用 base-64 Data URL 声明为内联,如下所示:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
srcset 和 sizes 语法:
完成后的<img> 元素,以及用于桌面和移动环境的文件将如下所示:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
srcset="/my-image-folder/desktop.png 640w,
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== 1w"
sizes="(min-width: 641px) 640px,
(max-width: 640px) 1px"
alt="Alternative Text for My Image"
/>
如果浏览器视口宽度为641px 或更大,则此<img> 元素仅会下载并显示desktop.png 图像。
否则会显示1x1像素透明png。
工作示例:
<h2>Narrow and Widen your Browser Viewport in Full Page</h2>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
srcset="https://via.placeholder.com/620x100 620w,
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== 1w"
sizes="(min-width: 641px) 620px,
(max-width: 640px) 1px"
alt="Alternative Text for My Image"
/>
浏览器支持
有关srcset 和sizes 属性的现代浏览器支持,请参阅:
更多信息(加教程)
有关使用srcset 和sizes 构建Responsive Images 的更多详细信息和教程,请参阅:
2021 年更新
上述答案中使用的数据 URL:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
有效,但它有点杂乱无章,而且很不清楚它应该代表什么(除非你已经知道它是什么)。
我后来意识到:
data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'/%3E
同样有效,而且更短、更简洁、更易于阅读。