HTML5 音频 Audio 标签详解

HTML5 引入了 <audio> 标签,允许开发者在网页中直接嵌入音频文件,而不需要依赖第三方插件。本文将全面介绍 <audio> 标签的各种属性,并通过实例代码详细说明其用法。

一、基础用法

1. 基本结构

HTML5 中使用 <audio> 标签嵌入音频文件,最简单的形式如下:

html 复制代码
<audio src="audio-file.mp3" controls></audio>

在这个示例中,src 属性指定音频文件的路径,controls 属性使浏览器显示音频控件。

2. 示例代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML5 Audio Example</title>
</head>
<body>
    <h1>HTML5 Audio Example</h1>
    <audio src="audio-file.mp3" controls>
        Your browser does not support the audio element.
    </audio>
</body>
</html>

这段代码将在网页上显示一个音频播放器,如果浏览器不支持 <audio> 标签,将显示替代文本 "Your browser does not support the audio element."。

二、属性详解

1. src

指定音频文件的 URL,可以是相对路径或绝对路径。

html 复制代码
<audio src="path/to/your-audio-file.mp3" controls></audio>

2. controls

显示音频控件(播放、暂停、音量等)。

html 复制代码
<audio src="audio-file.mp3" controls></audio>

3. autoplay

音频文件在页面加载完成后自动播放。需要注意的是,为了用户体验,很多浏览器默认禁止自动播放,特别是移动设备。

html 复制代码
<audio src="audio-file.mp3" controls autoplay></audio>

4. loop

音频文件播放结束后自动重新播放。

html 复制代码
<audio src="audio-file.mp3" controls loop></audio>

5. muted

初始加载时将音频设置为静音。

html 复制代码
<audio src="audio-file.mp3" controls muted></audio>

6. preload

提示浏览器在页面加载时如何处理音频文件。可能的值有:

  • none:不预加载音频文件。
  • metadata:只预加载音频文件的元数据。
  • auto:浏览器选择最佳方式预加载音频文件。
html 复制代码
<audio src="audio-file.mp3" controls preload="auto"></audio>

7. crossorigin

控制跨域资源共享 (CORS),允许你配置是否可以加载跨域资源。

  • anonymous:不使用凭据。
  • use-credentials:使用凭据(如 Cookies)。
html 复制代码
<audio src="audio-file.mp3" controls crossorigin="anonymous"></audio>

三、支持多种音频格式

由于不同浏览器对音频格式的支持不同,通常需要提供多种格式的音频文件,以确保兼容性。可以使用多个 <source> 标签来定义不同格式的音频文件。

html 复制代码
<audio controls>
    <source src="audio-file.mp3" type="audio/mpeg">
    <source src="audio-file.ogg" type="audio/ogg">
    Your browser does not support the audio element.
</audio>

示例代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML5 Audio Example</title>
</head>
<body>
    <h1>HTML5 Audio Example with Multiple Formats</h1>
    <audio controls>
        <source src="audio-file.mp3" type="audio/mpeg">
        <source src="audio-file.ogg" type="audio/ogg">
        Your browser does not support the audio element.
    </audio>
</body>
</html>

四、使用 JavaScript 控制音频

HTML5 提供了丰富的 JavaScript API,可以用来控制音频播放。以下是一些常用的属性和方法:

1. 常用属性

  • audio.currentTime:获取或设置当前播放时间(秒)。
  • audio.duration:获取音频总时长(秒)。
  • audio.paused:返回音频是否暂停。
  • audio.volume:获取或设置音量(0.0 到 1.0)。

2. 常用方法

  • audio.play():播放音频。
  • audio.pause():暂停音频。
  • audio.load():重新加载音频文件。

示例代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML5 Audio Control with JavaScript</title>
</head>
<body>
    <h1>Control HTML5 Audio with JavaScript</h1>
    <audio id="myAudio" src="audio-file.mp3" controls></audio>
    <br>
    <button onclick="playAudio()">Play</button>
    <button onclick="pauseAudio()">Pause</button>
    <button onclick="stopAudio()">Stop</button>

    <script>
        var audio = document.getElementById('myAudio');

        function playAudio() {
            audio.play();
        }

        function pauseAudio() {
            audio.pause();
        }

        function stopAudio() {
            audio.pause();
            audio.currentTime = 0; // Reset playback position to the start
        }
    </script>
</body>
</html>

在这个示例中,我们通过 JavaScript 控制音频的播放、暂停和停止。audio.pause() 方法用于暂停音频,audio.currentTime = 0 将播放位置重置到开始。

相关推荐
于慨2 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz2 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶2 天前
前端交互规范(Web 端)
前端
CHU7290352 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing2 天前
Page-agent MCP结构
前端·人工智能
王霸天2 天前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航2 天前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github
@大迁世界2 天前
2026年React大洗牌:React Hooks 将迎来重大升级
前端·javascript·react.js·前端框架·ecmascript
PieroPc2 天前
一个功能强大的 Web 端标签设计和打印工具,支持服务器端直接打印到局域网打印机。Fastapi + html
前端·html·fastapi
悟空瞎说2 天前
深入 Vue3 响应式:为什么有的要加.value,有的不用?从设计到源码彻底讲透
前端·vue.js