如何利用<picture>标签实现更灵活的图片展示,应对不同设备和格式需求?

大白话如何利用标签实现更灵活的图片展示,应对不同设备和格式需求?

什么是 <picture> 标签

<picture> 标签是 HTML5 新增的一个标签,它就像是一个图片的“指挥官”,能根据不同的设备屏幕大小、分辨率以及浏览器支持的图片格式,来选择最合适的图片展示给用户。这样做的好处是,在大屏幕设备上可以展示高清大图,在小屏幕设备上展示小图,既能保证图片清晰,又能节省流量。

基本用法示例

下面是一个简单的例子,用大白话解释每一部分代码的作用。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Picture 标签示例</title>
</head><body><!-- 使用 picture 标签来包裹多个图片源选项 --><picture><!-- source 标签用于指定不同条件下的图片源 --><!-- media 属性用于设置媒体查询条件,这里表示当屏幕宽度大于等于 1200px 时 --><source media="(min-width: 1200px)" srcset="large-image.jpg"><!-- 当屏幕宽度在 768px 到 1199px 之间时 --><source media="(min-width: 768px) and (max-width: 1199px)" srcset="medium-image.jpg"><!-- 当屏幕宽度小于 768px 时 --><source media="(max-width: 767px)" srcset="small-image.jpg"><!-- img 标签是必须的,它是默认的图片源,当所有 source 条件都不满足时显示 --><img src="default-image.jpg" alt="默认图片"></picture>
</body></html>

代码解释

  1. <picture> 标签:它就像一个容器,把多个 <source> 标签和一个 <img> 标签装在里面。浏览器会按照 <source> 标签的顺序,一个一个检查条件,找到第一个符合条件的图片就显示出来。
  2. <source> 标签
    • media 属性:这是一个媒体查询条件,就像是给图片设置了一个“入场券”。只有当设备的屏幕宽度满足这个条件时,对应的图片才会被显示。
    • srcset 属性:它指定了图片的文件路径,告诉浏览器应该从哪里找到这张图片。
  3. <img> 标签:它是最后的“备胎”。如果所有 <source> 标签的条件都不满足,浏览器就会显示 <img> 标签里指定的图片。

应对不同图片格式需求

除了根据屏幕大小选择图片,<picture> 标签还能根据浏览器支持的图片格式来选择。比如,现代浏览器支持 WebP 格式的图片,这种格式的图片通常比 JPEG 或 PNG 更小,加载速度更快。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Picture 标签支持不同格式示例</title>
</head><body><picture><!-- 如果浏览器支持 WebP 格式,就显示 WebP 图片 --><source type="image/webp" srcset="image.webp"><!-- 否则,显示 JPEG 图片 --><img src="image.jpg" alt="图片"></picture>
</body></html>

代码解释

  • type 属性:它指定了图片的 MIME 类型,也就是图片的格式。浏览器会先检查是否支持这个格式,如果支持,就显示对应的图片;如果不支持,就继续往下找,直到找到合适的图片。

通过这种方式,你可以利用 <picture> 标签实现更灵活的图片展示,满足不同设备和格式的需求。

<picture>标签和<img>标签有什么区别?

<picture>标签和<img>标签都用于在网页上展示图片,但它们存在一些区别,下面详细为你介绍:

功能灵活性

  • <img>标签:功能相对基础,主要用于简单地插入一张图片。它只能指定一个图片源,无法根据不同的设备特性、屏幕分辨率或浏览器支持的格式来选择不同的图片。例如:
<img src="example.jpg" alt="示例图片">

上述代码中,无论在何种设备上打开网页,显示的都是example.jpg这张图片。

  • <picture>标签:功能更强大、灵活。它可以包含多个<source>标签,每个<source>标签能设置不同的条件,像媒体查询(依据屏幕宽度、高度、方向等)和图片格式(如 JPEG、PNG、WebP)。浏览器会依据这些条件自动挑选最合适的图片显示。例如:
<picture><source media="(min-width: 1200px)" srcset="large.jpg"><source media="(min-width: 768px)" srcset="medium.jpg"><img src="small.jpg" alt="图片示例">
</picture>

在这个例子里,当屏幕宽度大于等于 1200px 时,显示large.jpg;宽度在 768px 到 1199px 之间,显示medium.jpg;宽度小于 768px 时,显示small.jpg

图片格式支持

  • <img>标签:只能指定一个图片源,这意味着只能提供一种图片格式。要是浏览器不支持该格式,就可能无法正常显示图片。
  • <picture>标签:可以提供多种图片格式供浏览器选择。比如,可先提供 WebP 格式的图片,因为它的压缩率高、加载速度快;若浏览器不支持 WebP,再提供 JPEG 或 PNG 格式的图片。示例如下:
<picture><source type="image/webp" srcset="image.webp"><img src="image.jpg" alt="图片示例">
</picture>

此代码中,浏览器若支持 WebP 格式,就显示image.webp;若不支持,则显示image.jpg

响应式设计

  • <img>标签:要实现响应式图片,通常得借助 CSS 来调整图片的大小,像设置max-width: 100%; height: auto;。不过,这只是简单缩放图片,无法依据不同的屏幕尺寸更换不同分辨率的图片。
  • <picture>标签:天生就适合响应式设计,能根据不同的屏幕尺寸和设备特性,提供不同分辨率和尺寸的图片,从而优化用户体验并减少数据流量消耗。

兼容性

  • <img>标签:是 HTML 中最基础的标签之一,所有浏览器都支持,兼容性极佳。
  • <picture>标签:虽然大部分现代浏览器都支持,但一些旧版本的浏览器可能不支持。所以,在<picture>标签中需要包含一个<img>标签作为备用方案,以确保在不支持<picture>标签的浏览器中也能正常显示图片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38072.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis集群的原理是什么?

大家好&#xff0c;我是锋哥。今天分享关于【redis集群的原理是什么?】面试题。希望对大家有帮助&#xff1b; redis集群的原理是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 集群&#xff08;Redis Cluster&#xff09;是一种分布式解决方案&…

PicFlow:一个图片处理与上传工作流工具(图床上传工具)

自从学习搭建网站以来&#xff0c;我就把很多图片托管在七牛云等图床平台上。以前总是通过网页批量上传&#xff0c;需要登录并一步步跳转网页操作&#xff0c;久而久之就厌烦了&#xff0c;于是花了一天时间用 Python 写了一个工具 —— PicFlow&#xff0c;从名字可以看出&am…

常⻅CMS漏洞之一:WordPress

WordPress是⼀个以PHP和MySQL为平台的⾃由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。截⾄2018年4⽉&#xff0c;排名前1000万的⽹站中超过30.6%使⽤WordPress。 WordPress是最受欢迎的⽹站 内容管理系统。全球有⼤约30%的⽹站(7亿5000个)都是使⽤WordP…

一文说清预训练与微调:AI的双重训练法则

什么是预训练&#xff1f; 预训练是大型语言模型训练的第一步。它在资金和计算能力的支持下&#xff0c;通过深入分析大量的文本数据&#xff0c;使模型建立起语言的基本构架。在这一阶段&#xff0c;模型通过学习海量的书籍、文章和网页&#xff0c;识别出语言的语法、句法和…

【TI MSPM0】Timer学习

一、计数器 加法计数器&#xff1a;每进入一个脉冲&#xff0c;就加一减法计算器&#xff1a;每进入一个脉冲&#xff0c;就减一 当计数器减到0&#xff0c;触发中断 1.最短计时时间 当时钟周期为1khz时&#xff0c;最短计时时间为1ms&#xff0c;最长计时时间为65535ms 当时…

Vue 中的日期格式化实践:从原生 Date 到可视化展示!!!

&#x1f4c5; Vue 中的日期格式化实践&#xff1a;从原生 Date 到可视化展示 &#x1f680; 在数据可视化场景中&#xff0c;日期时间的格式化显示是一个高频需求。本文将以一个邀请码关系树组件为例&#xff0c;深入解析 Vue 中日期格式化的 核心方法、性能优化 和 最佳实践…

C语言的数据类型与变量(完整版)

目录 一、基本数据类型 &#xff08;一&#xff09;字符类型 &#xff08;二&#xff09;整数类型 1、短整型 — short 2、整型 — int 3、长整型 — long 4、长长整型 — long long &#xff08;三&#xff09;布尔类型 &#xff08;四&#xff09;浮点类型 1、单精…

免费下载 | 2025低空经济产业发展报告

低空经济概览 产业链条&#xff1a;低空经济产业链分为上游的低空经济基础设施&#xff08;如空管系统、飞行基地等&#xff09;、中游的低空制造&#xff08;包括无人机、eVTOL、直升机等飞行器的设计、研发、生产&#xff09;和下游的低空运营及飞行服务。低空经济以低空空域…

git_version_control_proper_practice

git_version_control_proper_practice version control&#xff0c;版本控制的方法之一就是打tag 因为多人协作的项目团队&#xff0c;commit很多&#xff0c;所以需要给重要的commit打tag&#xff0c;方便checkout&#xff0c;检出这个tag 参考行业的实践方式。如图git、linux…

金桔网桥连载4-详解

上一节我讲到小王升职加薪&#xff0c;越活越年轻&#xff0c;然后我们的网络就成这样的 如果继续往下进行网络扩展&#xff0c;恐怕看的人就越看越糊涂&#xff0c;如果一篇文章看到人越少&#xff0c;那么存在的价值越小&#xff0c;使我想起了每年一部的梦工厂电影&#xff…

从GTC2025首次量子日看英伟达量子AI融合算力网络前景与趋势

GTC2025 Quantum Day 最新内容全部汇总: 技术名称描述合作伙伴/开发者应用场景/目标量子模拟器优化方案NVIDIA与IonQ、D-Wave合作,针对量子模拟器进行性能优化,提升量子计算任务效率。IonQ、D-Wave量子算法开发、复杂系统模拟混合量子-经典计算架构结合量子计算与经典GPU加速…

24.map和set的使用

一、序列式容器和关联式容器 序列式容器&#xff1a;逻辑结构为线性序列的容器&#xff0c;两个位置所存放的数据一般没有紧密关系&#xff0c;例如两个位置交换一下&#xff0c;逻辑结构没有改变。 关联式容器&#xff1a;通常是非线性结构&#xff08;堆例外&#xff09;&…

免费Typora1.8.6安装教程

&#x1f31f; Typora - 极简主义的 Markdown 编辑器免费指南 &#x1f31f; &#x1f4cc; 什么是 Typora&#xff1f; Typora 是一款广受好评的 **所见即所得** 的 Markdown 编辑器&#xff0c;以极致简洁的界面和流畅的写作体验闻名。它让 Markdown 写作变得像使用 Word 一…

元音辅音及其字母组合发音

文章目录 单元音长元音/ɑː//ɔ://u://i://ɜː/// 短元音/ʌ//ɒ//ʊ//ɪ//ə//e/ 双元音/eɪ//aɪ//ɔɪ//ɪə//eə//ʊə//əʊ//aʊ/ 辅音3个鼻辅音m n ŋ 5个独立浊辅音w j r l h 20个清浊相对的辅音s zʃ ʒf vθ p bt dk gts dztʃ dʒtr dr 以下是列举的部分字母组合…

基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现

基于FPGA实现频率、幅度、相位可调的DDS 1 摘要 直接数字合成器( DDS ) 是一种通过生成数字形式的时变信号并进行数模转换来产生模拟波形(通常为正弦波)的方法,它通过数字方式直接合成信号,而不是通过模拟信号生成技术。DDS主要被应用于信号生成、通信系统中的本振、函…

C++调用ffmpeg解复用、解码案例

框架 一个封装文件&#xff08;mp4&#xff09;如何播放&#xff1f;大体流程如下&#xff1a; 案例 本案例实现在windows环境下&#xff0c;调用ffmpeg4.4.5动态库实现上述从解封装、视频解码、音频解码的全部过程&#xff0c;案例测试通过。由于ffmpeg接口功能网上资料较多&a…

Linux(进程)

一.冯诺依曼体系结构 输入设备&#xff1a;键盘&#xff0c;鼠标&#xff0c;话筒&#xff0c;摄像头...网卡&#xff0c;磁盘 输出设备&#xff1a;显示器&#xff0c;磁盘&#xff0c;网卡&#xff0c;打印机 外设&#xff1a;输入设备输出设备 cpu&#xff08;中央处理器&am…

[极客大挑战 2019]BabySQL—3.20BUUCTF练习day4(3)

[极客大挑战 2019]BabySQL-3.20BUUCTF练习day4(3) 做题过程 打开是以下页面&#xff08;前几天有它的第一版和第二版出现&#xff09;输入1’ 回显以下内容&#xff08;还是字符型以单引号闭合&#xff0c;因为有报错信息回显&#xff09; 输入1 order by 4%23回显成这个 被过…

[Effective C++]条款20:宁以 pass-by-reference-to-const替换 pass-by-value

. 在C中&#xff0c;函数参数与返回值的数据传递的方式&#xff0c;对程序的性能和正确性有着重要影响。C默认使用pass-by-value&#xff08;传值&#xff09;的方式传递参数。但这种方式在某些情况下会导致性能问题和对象切割问题。 C推荐使用pass-by-reference-to-const&…

文字变央视级语音转换工具

大家在制作短视频、广告宣传、有声读物、自媒体配音、学习辅助等场景的时候&#xff0c;经常会需要用到配音来增强视频的表现力和吸引力。然而&#xff0c;市面上的一些配音软件往往需要收费&#xff0c;这对于很多初学者或者预算有限的朋友来说&#xff0c;无疑增加了一定的负…