您好!欢迎访问家园网-www.jy.wang!

家园网

srcset和src有何不同,<source>和<img>又有何不同?另外srcset也是规定好的吗?

网络 作者:本站 点击:

这段代码啥意思?srcset和src有何不同,

<source>和<img>又有何不同?另外srcset也是规定好的吗?

<picture>
<source srcset="1.jpg" media="(max-width: 800px)">
<img src="2.jpg">
</picture>


<picture> 代码段完整讲解

一、这段代码的整体意思

html

<picture>
    <source srcset="1.jpg" media="(max-width: 800px)">
    <img src="2.jpg"></picture>

一句话概括:这是一个智能图片选择器。浏览器会根据屏幕宽度自动选择合适的图片。

  • 当屏幕宽度 ≤ 800px 时:加载 1.jpg(小图,适合手机)

  • 当屏幕宽度 > 800px 时:加载 2.jpg(大图,适合电脑)


二、srcset 和 src 的区别

属性所属标签作用特点
srcset<source> 或 <img>指定多个图片候选用于响应式场景,可配合 media 或 sizes
src<img>指定一个图片传统写法,兼容性兜底

具体对比

html

<!-- src:只能指定一张图 --><img src="2.jpg"><!-- srcset:可以指定多张图,配合不同条件 --><img srcset="1.jpg 800w, 2.jpg 1600w" sizes="100vw">

在您的代码中:

  • <source srcset="1.jpg">:声明一个候选图片 1.jpg

  • <img src="2.jpg">:声明默认图片 2.jpg


三、<source> 和 <img> 的区别

对比项<source><img>
作用提供备选资源实际显示图片
是否可见不可见,仅作为配置可见,真正显示在页面上
是否必需可选必需(作为兜底)
srcset✅ 支持✅ 支持
media✅ 支持(媒体查询)❌ 不支持
src❌ 不支持✅ 支持

<picture> 的工作原理

text

<picture>
    <source ...>   ← 第1个候选
    <source ...>   ← 第2个候选
    <img ...>      ← 兜底(所有条件都不满足时使用)
</picture>

浏览器从上到下依次检查 <source> 的条件,选择第一个匹配的。如果都不匹配,就用 <img>


四、srcset 是规定好的吗?

是的,srcset 是 HTML5 标准中规定的属性,由 W3C(万维网联盟)制定。

srcset 的标准语法

html

srcset="图片URL 宽度描述符, 图片URL 宽度描述符, ..."

宽度描述符(两种写法):

写法示例含义
像素密度描述符1.jpg 2x适用于 2 倍屏(Retina 屏幕)
宽度描述符1.jpg 800w图片本身的宽度是 800px

完整示例

html

<!-- 像素密度描述符 --><img srcset="1.jpg 1x, 2.jpg 2x" src="1.jpg"><!-- 宽度描述符(配合 sizes) --><img srcset="1.jpg 800w, 2.jpg 1600w" 
     sizes="(max-width: 800px) 100vw, 1600px"
     src="2.jpg">


五、您的代码执行流程图

text

用户打开网页
     ↓
浏览器检查屏幕宽度
     ↓
屏幕宽度 ≤ 800px 吗?
     ├── 是 → 加载 1.jpg(小图)
     └── 否 → 加载 2.jpg(大图,来自 <img> 兜底)


六、三种写法对比

写法1:只用 <img>(传统)

html

<img src="2.jpg">

  • ✅ 简单

  • ❌ 手机和电脑都加载大图,浪费流量

写法2:用 srcset + sizes(高级)

html

<img srcset="1.jpg 800w, 2.jpg 1600w" 
     sizes="(max-width: 800px) 100vw, 1600px"
     src="2.jpg">

  • ✅ 一张图搞定

  • ❌ 语法稍复杂

写法3:用 <picture> + <source>(您的代码)

html

<picture>
    <source srcset="1.jpg" media="(max-width: 800px)">
    <img src="2.jpg"></picture>

  • ✅ 清晰直观

  • ✅ 适合不同尺寸使用完全不同内容的图片(如手机版用横图,电脑版用竖图)


七、总结表

问题答案
这段代码什么意思?窄屏(≤800px)用 1.jpg,宽屏用 2.jpg
srcset 和 src 区别?srcset 用于多候选,src 用于单张
<source> 和 <img> 区别?<source> 提供条件,<img> 是兜底显示
srcset 是规定好的吗?是,HTML5 标准属性
哪个标签必须有?<img> 必须有,<source> 可选

一句话总结<picture> 像一个智能图片开关,<source> 设置条件,条件满足就用它指定的图,不满足就用 <img> 的图


标签: