7、音频和视频¶
TIP: 早年在网页中插入音视频需要使用 Flash 技术,当下基本已经淘汰。可直接使用 HTML5 标签轻松在网页中像插入图片一样插入音频和视频即可。
7.1、音频标签¶
TIP:
<audio>标签可直接在网页中插入音频,并自动生成默认的播放器。
<audio controls src="mp3/不错哟.mp3">
亲爱的,您的浏览器不支持audio标签,请升级您的浏览器哟 ^_^
</audio>
![[Pasted image 20260127163311.png]] 属性说明:
-
controls:显示播放控件 -
src:音频文件路径 -
标签内部文字:对不兼容 audio 标签的浏览器所显示的文字
其他常用属性:
-
autoplay:音频自动播放,不会等待整个音频文件下载完成 -
loop:循环播放音频
<audio controls src="mp3/不错哟.mp3" autoplay loop>
抱歉,您的浏览器不支持audio标签,请升级您的浏览器哟 ^_^
</audio>
7.2、音频标签 audio 的子标签¶
TIP:
source标签为媒体元素定义媒体资源,该标签允许定义多个格式的音视频文件,供浏览器选择自己支持的媒体类型进行播放。
| Format | MIME-type | 描述 |
|---|---|---|
| MP3 | audio/mpeg |
一种音频压缩技术,用来大幅度的降低音频数据量 |
| Ogg | audio/ogg |
一种新的音频压缩格式,是完全免费、开发和没有专利限制的 |
| Wav | audio/wav |
微软公司开发的一种声音文件格式,声音文件质量和 CD 相差无几 |
浏览器行为: 需要选择它支持格式的源文件进行播放,如果都支持则任选一个(默认选择第一个)
<h2>audio 子标签 source</h2>
<audio controls>
<source src="audio/不错哟.mp3" type="audio/mpeg" />
<source src="audio/不错哟.ogg" type="audio/ogg" />
<source src="audio/不错哟.wav" type="audio/wav" />
亲爱的,您的浏览器不支持audio标签,请升级您的浏览器哟 ^_^
</audio>
![[Pasted image 20260127163410.png]]¶
7.3、视频标签 video 的子标签¶
| Format | MIME-type | 描述 |
|---|---|---|
| mp4 | video/mp4 |
MP4 = MPEG 4 文件使用 H264 视频编解码器和 AAC 音频编解码器 |
| webm | video/webm |
WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器 |
| avi | video/avi |
avi 文件支持 256 色和 RLE 压缩,他对视频文件采用了一种有损压缩方式 |
| ogv | video/ogv |
Ogg 文件使用 Theora 视频编解码器和 Vorbis 音频编解码器 |
浏览器行为: 需要选择它支持格式的源文件进行播放,如果都支持则任选一个(默认选择第一个)
<h2>video 子标签 source</h2>
<video controls width="500">
<source src="video/1.mp4" type="video/mp4" />
<source src="video/1.webm" type="video/webm" />
<source src="video/1.ogv" type="video/ogv" />
<source src="video/1.avi" type="video/avi" />
亲爱的,您的浏览器不支持video标签,请升级您的浏览器哟 ^_^
</video>
![[Pasted image 20260127163434.png]]¶
8、iframe 标签¶
TIP:
<iframe>是 HTML 中用于在当前页面嵌入另一个 HTML 文档(如第三方内容、广告、视频等)的内联框架标签。它允许在一个网页中显示来自其他页面的内容,实现网页间的互联互通。
注意事项: 所有主流浏览器都支持 <iframe>标签,但不当使用可能导致性能、安全或用户体验问题。
8.1、基本语法¶
src属性指定要嵌入的页面 URL,可以是相对路径或绝对路径:
<iframe src="URL"></iframe>
8.2、常用属性¶
| 属性名 | 说明 | 示例 |
|---|---|---|
width |
设置 <iframe>的宽度(像素值或百分比) |
<iframe width="800"></iframe> |
height |
设置 <iframe>的高度(像素值或百分比) |
<iframe height="600"></iframe> |
frameborder |
规定是否显示 <iframe>周围的边框(HTML5 中已不推荐,建议用 CSS) |
<iframe frameborder="0"></iframe> |
scrolling |
规定是否在 <iframe>中显示滚动条(HTML5 中已不推荐,建议用 CSS) |
<iframe scrolling="no"></iframe> |
name |
规定 <iframe>的名称 |
<iframe name="myFrame"></iframe> |
sandbox |
启用对 <iframe>内容的额外限制(如 allow-same-origin) |
<iframe sandbox="allow-same-origin"></iframe> |
allow |
控制 <iframe>内嵌页面的具体功能(如 camera、microphone) |
<iframe allow="camera; microphone"></iframe> |
loading |
延迟加载(lazy)或立即加载(默认) | <iframe loading="lazy"></iframe> |
title |
为屏幕阅读器提供描述性文本 | <iframe title="视频播放器"></iframe> |
8.3、实践应用¶
嵌入网页¶
<iframe
src="https://www.arryblog.com"
width="800"
height="600"
frameborder="0"
></iframe>
将名为 https://www.arryblog.com的网页嵌入到当前页面中,嵌入的 <iframe>宽度为 800 像素,高度为 600 像素,且不显示边框。
嵌入图片¶
<iframe
src="https://sce7a2b9c9d95a-sb-qn.qiqiuyun.net/files/course/2024/08-27/2052535547fa551878.png"
width="800"
height="600"
frameborder="0"
></iframe>
嵌入第三方服务¶
<!-- 嵌入优酷视频 -->
<iframe
height="498"
width="510"
src="https://player.youku.com/embed/XNjM2MzAzNzUyOA=="
frameborder="0"
allowfullscreen
></iframe>
注: allowfullscreen属性允许全屏模式。
嵌入地图¶
<!-- 嵌入百度地图 -->
<iframe
src="https://j.map.baidu.com/aa/5NJ"
width="600"
height="450"
style="border: 0"
allowfullscreen=""
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
></iframe>
referrerpolicy 属性说明:
-
no-referrer-when-downgrade表示在从 HTTPS 页面发送到 HTTP 页面时不发送 Referer 头信息 -
这种策略在安全性方面提供了一种平衡,防止潜在的安全风险
嵌入广告或第三方内容¶
<iframe
src="https://huodong.taobao.com/wow/a/act/tao/dailygroup/23509/24308/wupr?spm=a21bo.jianhua/a.banner.d1.5af92a895B8bah&wh_pid=daily-565955&disableNav=YES&status_bar_transparent=true&custom_content_source=a2113w.30197676"
width="1000"
height="550"
sandbox="allow-same-origin allow-scripts"
title="广告"
></iframe>
注: 严格限制 sandbox 权限,防止广告代码恶意操作。
JavaScript 控制 iframe¶
<script>
function changeURL() {
var iframe = document.getElementById("myFrame");
iframe.src = "https://www.arryblog.com";
}
</script>
<input type="button" value="改变URL" onclick="changeURL()" />
<iframe
id="myFrame"
src="https://www.icodingedu.com/"
width="800"
height="600"
frameborder="0"
></iframe>
8.4、iframe 最佳实践¶
| 最佳实践 | 说明 |
|---|---|
| 安全性 | |
| 设置 sandbox | 限制 <iframe>的权限,防止恶意代码攻击 |
| 指定 allow | 控制 <iframe>内嵌页面的具体功能 |
| 避免混合内容 | 确保 <iframe>的 src 使用 https:// |
| 性能优化 | |
使用 loading="lazy" |
延迟加载,减少初始页面加载时间 |
| 明确设置 width 和 height | 避免页面布局抖动 |
| 减少嵌套层级 | 防止性能下降 |
| 可访问性 | |
| 添加 title 属性 | 为屏幕阅读器提供描述性文本 |
避免关键内容依赖 <iframe> |
重要内容应直接放在主页面中 |
| 用户体验 | |
| 提供备用内容 | 当 <iframe>无法加载时显示备用文本或链接 |
| 避免自动播放 | 尤其是音频内容 |
| SEO 优化 | |
避免滥用 <iframe> |
搜索引擎通常无法索引 <iframe>内的内容 |
三、语义化标签¶
TIP: HTML 语义化是指我们在写 HTML 结构时用有英文语义的标签,使 HTML 更易于开发人员和机器的阅读和理解。
为什么要语义化?
-
为了在没有 CSS 的情况下,页面也能呈现出很好地内容结构、代码结构,易于阅读
-
提升用户体验:如 title、alt 属性用于名词解释或图片内容说明,以及 label 标签的灵活运用等
-
有利于 SEO 优化:与搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息
-
可访问性:帮助辅助技术(如视障用户的屏幕阅读器)更好的阅读和转译你的网页
-
国际化:遵循 W3C 标准通用的语义化标签可以让各国开发者更容易弄懂你网页的结构
-
可维护性:语义化更具可读性,减少网页间的差异性,方便后期开发和维护
1、HTML 文本格式化标签¶
TIP: 对文本内容进行格式化处理的相关标签
1.1、span 标签¶
TIP:
<span>标签是文本中的区块标签,没有任何显示的效果,可以结合 CSS 来定位区块的样式。
<h1>语义化标签</h1>
<h2>span 标签</h2>
<p>
商品价格:
<span>368</span>元,优惠价:<span>298</span>元
</p>
1.2、文本格式化标签¶
| 标签 | 功能 | 示例 | 语义化用途 |
|---|---|---|---|
<strong> |
定义加重语气,表示特别重要的文字(粗体显示) | <p>这是<strong>重要</strong>内容</p> |
表示文本内容的重要性和紧迫性 |
<em> |
强调文本(斜体显示) | <p>这是<em>强调</em>内容</p> |
表示文本内容的语气或情感强调 |
<mark> |
高亮文本 | <p>这是<mark>高亮</mark>内容</p> |
标记需要用户特别注意的文本 |
<del> |
删除线文本 | <p>原价<del>100元</del></p> |
表示已删除或不再准确的内容 |
<ins> |
下划线文本(插入内容) | <p>现价<ins>80元</ins></p> |
表示新增或修改的内容 |
<u> |
下划线文本(非强调用途)已被 CSS 替代 | <p><u>拼写错误</u></p> |
不推荐用于强调,建议用 CSS 或语义标签 |
<small> |
小号字体文本 | <p><small>版权声明</small></p> |
表示次要文本(如版权、免责声明) |
<sup> |
定义上标字 | H<sub>2</sub>O 或 2<sup>2</sup> |
用于科学公式、脚注等 |
<sub> |
定义下标字 | 同上 | 用于化学式、数学公式等 |
<pre> |
预格式化文本 | <pre>保留空格和换行</pre> |
用于显示代码、诗歌等需要保留格式的内容 |
<code> |
计算机代码片段 | <p>使用<code>console.log()</code></p> |
标记代码片段 |
<kbd> |
键盘输入文本 | <p>按<kbd>Ctrl+S</kbd>保存</p> |
表示用户键盘输入的内容 |
<samp> |
程序输出样本 | <p>输出结果:<samp>Hello</samp></p> |
表示程序或系统的输出内容 |
<var> |
变量名 | <p>定义变量:<var>x</var>=10</p> |
用于数学表达式或编程文档中的变量 |
<abbr> |
缩写词 | <p><abbr title="World Wide Web">WWW</abbr></p> |
表示缩写词,可通过title提供全称 |
<q> |
短引用 | <p>他说:<q>你好</q></p> |
表示短引用,浏览器可能自动加引号 |
<blockquote> |
长引用 | <blockquote>长引用内容</blockquote> |
表示长引用,通常缩进显示 |
<cite> |
引用来源 | <p>出自《<cite>书名</cite>》</p> |
表示作品标题(如书籍、电影等) |
<dfn> |
定义术语 | <p><dfn>HTML</dfn>是标记语言</p> |
表示术语的定义 |
<b> |
视觉加粗(无语义)已被 CSS 替代 | <p><b>粗体文本</b></p> |
仅用于视觉样式,无语义 |
<i> |
视觉斜体(无语义)已被 CSS 替代 | <p><i>斜体文本</i></p> |
仅用于视觉样式,无语义 |
<figure> |
一段独立的内容 | <figure><img src="images/6.webp" alt="" /><figcaption>小米智能家居,智能门锁</figcaption></figure> |
代表一段独立的内容,与说明 figcaption 标签配合使用 |
<figcaption> |
一个独立的引用单元 | 同上 | 标签为 <figure>元素定义标题 |
<time> |
日期和时间 | <p>会议将于 <time datetime="2028-06-15T14:30">6月15日下午2:30</time> 开始。</p> |
包含 datetime 属性提供机器可读格式 |
1.3、完整示例¶
<h1>语义化标签</h1>
<h2>span 标签</h2>
<p>
商品价格:
<span>368</span>元,优惠价:<span>298</span>元
</p>
<h2>文本格式化标签</h2>
b标签:<b>定义粗体文本</b> <br /><br />
em标签:<em>表示被强调的文本</em> <br /><br />
i标签:<i>斜体</i> <br /><br />
u标签:<u>定义文本下划线</u> <br /><br />
strong标签:<strong>定义加重语气,表示特别重要的文字</strong><br /><br />
del标签:<del>定义删除字 </del><br /><br />
mark标签:<mark>一段需要被高亮的文本</mark>
<h3>sub 标签</h3>
<p>碳在氧气中充分燃烧:C + O<sub>2</sub> = CO<sub>2</sub></p>
<p>铁在氧气中燃烧: 3Fe + 2O<sub>2</sub> = Fe<sub>3</sub>O<sub>4</sub></p>
<h3>sup 标签</h3>
<p>2<sup>3</sup> + 3<sup>2</sup> = 17</p>
<h3>pre 预格式化文本</h3>
<pre>
预格式化文本
被包围在 pre标签 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体
pre 标签的一个常见应用就是用来表示计算机的源代码。
<div id="app">
<button @click="count++">
Count is: {{ count }}
</button>
</div>
</pre>
<h3>figure、figcaption 标签</h3>
<p>
代表一段独立的内容,与figcaption配合使用。figure
标签规定独立的流内容(图像、图表、照片、代码等等)。一个独立的引用单元,标签为figure
元素定义标题
</p>
<p>
<figure>
<img src="images/6.webp" alt="" />
<figcaption>小米智能家居,智能门锁</figcaption>
</figure>
<figure>
<img src="images/7.webp" alt="" />
<figcaption>小米智能家居,平衡车</figcaption>
</figure>
</p>
<h3>blockquote 和 q</h3>
<blockquote cite="https://example.com/quote">
<p>设计不仅仅是外观和感觉,设计是产品如何工作。</p>
<footer>— Steve Jobs</footer>
</blockquote>
<p>正如 <q>时间就是金钱</q> 这句话所说...</p>
<h3>time 标签</h3>
<p>会议将于 <time datetime="2028-06-15T14:30">6月15日下午2:30</time> 开始。</p>
![[Pasted image 20260127163736.png]]