HTML 里 img 元素的 src 和 srcset 属性有何区别?

简介: HTML 里 img 元素的 src 和 srcset 属性有何区别?

在 HTML 中,img 元素通常用于在网页中插入图片。img 元素有两个相关的属性:src 和 srcset。


src 属性指定图像的 URL,它是必需的。浏览器将使用该 URL 加载图像并将其显示在页面上。


srcset 属性允许您指定一系列不同大小或分辨率的图像文件,以便浏览器可以根据设备的像素密度和屏幕大小选择最合适的图像。srcset 属性的值是一个逗号分隔的列表,其中每个项目都有一个图像文件的 URL,后跟一个空格和一个分辨率描述符。描述符指定图像的分辨率,并告诉浏览器如何选择最合适的图像。通常使用像素密度(如“1x”或“2x”)或图像宽度(如“320w”或“640w”)作为描述符。


在使用 srcset 属性时,可以选择一个默认的图像文件,将其 URL 放在 img 元素的 src 属性中。如果浏览器不支持 srcset 属性或无法选择最合适的图像,则将加载默认的图像文件。


总的来说,src 属性用于指定图像的 URL,而 srcset 属性用于指定一系列不同大小或分辨率的图像文件,以便浏览器可以选择最合适的图像来适应不同的设备和屏幕大小。


下面是一个具体的例子。

1bbf25bf288cba24bb17acc214b6b554_aa4502d0669a1e47d2de7d0b321ebeaf.pngf0254a80cbdbba1ab4b145e945268d4f_fda58ecdf7f111dac7658768090e4c14.png


src 里的 NmOQ 是默认值,类型为 zoom:

ffa091ab77bbfefc7b33341d2ecf08b7_8e5a27e39fbf56fe7bb207bf25e5b2f4.png


在现代浏览器中,当浏览器遇到一个带有 srcset 属性的 img 标签时,它将根据以下步骤来渲染图片:


首先,浏览器会根据 devicePixelRatio (设备像素比)确定屏幕的实际像素密度。例如,Retina 显示屏幕的 devicePixelRatio 为 2。


接下来,浏览器会将 srcset 属性的值解析为一组可用的图片资源和它们的尺寸。每个图片资源都包含了一个图片 URL 和一个描述该图片的宽度,例如:https://example.com/image-1000w.jpg 1000w。


浏览器根据屏幕的宽度和每张图片的宽度来计算出最佳的图片大小,这个大小就是要显示的图片的实际像素尺寸。例如,如果设备的宽度为 500px,浏览器会选择一个最接近 500px 的图片资源,例如图片宽度为 600px 的那张图片。


最后,浏览器将选中的图片资源的 URL 赋给 img 元素的 src 属性,然后加载并显示该图片。


总之,浏览器会根据设备像素比、可用图片资源和设备宽度来自动选择和加载最佳的图片,从而实现高清晰度和响应式图片的效果。

相关文章
|
存储 前端开发 JavaScript
纯前端实现腾讯cos文件上传功能
在前端开发中文件上传是经常会遇到的,并且多数情况会使用第三方平台来存储文件,腾讯云cos是我们常用的。本篇文章就是带我从前端的角度实现腾讯云COS存储。本文参考了腾讯云COS开发文档 JavaScript SDK
1016 0
|
10月前
|
移动开发 安全 JavaScript
html5使用postMessage解决跨域和跨窗口消息传递的解决方案
html5使用postMessage解决跨域和跨窗口消息传递的解决方案
111 0
|
存储 前端开发 搜索推荐
前端 “一键换肤“ 的几种方案
前端 “一键换肤“ 的几种方案
175 0
|
10月前
|
Android开发
uniapp下载文件安装
uniapp下载文件安装
108 0
|
11月前
|
数据可视化 JavaScript 前端开发
前端可视化数据大屏(1)
前端可视化数据大屏(1)
523 0
|
JavaScript 前端开发 数据库
【Vue】实现出生日期计算年龄
【Vue】实现出生日期计算年龄
334 0
【Vue】实现出生日期计算年龄
|
编解码 前端开发 JavaScript
img标签中的srcset属性有什么用?
img元素的srcset属性用于浏览器根据宽、高和像素密度来加载相应的图片资源。 也就是说,我们不需要使用JavaScript也可以实现分辨率自适应。
344 0
|
NoSQL MongoDB 索引
MongoDB:16-MongoDB-索引数组字段和索引子文档字段
MongoDB:16-MongoDB-索引数组字段和索引子文档字段
849 0
|
JavaScript
vue vue3 实现滚动进度条,斑马纹进度条
vue vue3 实现滚动进度条,斑马纹进度条
vue vue3 实现滚动进度条,斑马纹进度条
|
数据可视化 JavaScript 前端开发
前端可视化大屏设置全屏模式方法
前端可视化大屏设置全屏模式方法
前端可视化大屏设置全屏模式方法

相关实验场景

更多