<audio src=""></audio>
<audio src="" controls></audio>
<audio controls> <source src="myAudio.mp3" type="audio/mpeg" /> <source src="myAudio.ogg" type="audio/ogg" /> </audio>
<audio src="AudioTest.ogg" autoplay> <a href="AudioTest.ogg" download="AudioTest.ogg">Download OGG audio</a>. </audio>
<audio src="AudioTest.ogg" autoplay> 您的浏览器不支持audio标签 </audio>
| item | desc |
|---|---|
| src | 音频的URL,推荐使用 MP3 格式 |
| autoplay | 自动播放;布尔属性 |
| controls | 播放控制条;布尔属性 |
| loop | 重复播放;布尔属性 |
| muted | 静音播放;布尔属性 |
| preload | 预加载;如果使用 autoplay,则忽略该属性 |
| hidden | 隐藏;同 display: none;隐藏后,仍然可以使用 JavaScript 控制!!! |
<audio src="./mp3/Alizee-La Isla Bonita.mp3" autoplay loop hidden>您的浏览器不支持audio标签</audio>
| item | desc |
|---|---|
| autoplay | 设置或返回是否在就绪(加载完成)后随即播放音频 |
| currentTime | 设置或返回音频中的当前播放位置;以秒计) |
| duration | 时长 |
| ended | 是否已结束 |
| muted | 是否关闭声音 |
| paused | 是否暂停 |
| loop | 是否循环 |
| played | 播放状态;返回表示音频已播放部分的 TimeRanges 对象 |
| src | 设置或返回音频的 src 属性的值 |
| volume | 设置或返回音频的音量: 0.0(静音)- 1.0(最大声) |
| item | desc |
|---|---|
| pause() | 暂停 |
| play() | 播放 |
| item | desc |
|---|---|
| Audio() | 构造方法;创建一个不可视的音频组件,如播放背景 |
| loadstart | 浏览器开始加载资源 - browser has started to load a resource |
| progress | 媒体加载资源的过程中,周期性触发 - fired periodically as the browser loads a resource
可以应用加载效果 |
| durationchange | 时长发生变化触发;加载完毕后,从NaN变为实际的数值 - duration attribute has been updated |
| loadedmetadata | 加载元数据:时长、尺寸大小(视频)、文本轨道、标题、艺术家、专辑等等 |
| loadeddata | 当前帧的数据加载完毕,下一帧还未就绪 |
| canplay | 媒体就绪,可以播放;需要缓冲 |
| canplaythrough | 媒体就绪,可以正常播放且无需停顿和缓冲 |
| play | 播放;暂停属性由真变为假的时候 - the paused property is changed from true to false
同时触发 playing 事件 |
| playing | 播放中;媒体属性 play 为真 |
| pause | 暂停;媒体属性 pause 为真 |
| ended | 播放结束
先触发暂停 pause 事件 |
| seeking | 循迹中
每次循迹过程都包括 seeking、durationchange、seeked、canplay、canplaythrough 如果播放中循迹,还会触发 pause |
| seeked | 循迹结束 |
| volumechange | 改变音量 |
<button id="ctrl">play/pause</button> <audio id="audio" src="Alizee.mp3" hidden></audio>
const audio = document.getElementById('audio');
const ctrlBtn = document.getElementById('ctrl');
const play = () => {
audio.paused ? audio.play() : audio.pause();
};
ctrlBtn.addEventListener('click', play)
audio.addEventListener('loadstart', (e) => {
console.log('loadstart');
})
audio.addEventListener('progress', (e) => {
console.log('progress');
})
audio.addEventListener('durationchange', (e) => {
console.log('durationchange', audio.duration);
})
audio.addEventListener('loadedmetadata', (e) => {
console.log('loadedmetadata');
})
audio.addEventListener('loadeddata', (e) => {
console.log('loadeddata');
})
audio.addEventListener('canplay', (e) => {
console.log('canplay');
})
audio.addEventListener('canplaythrough', (e) => {
console.log('canplaythrough');
})
audio.addEventListener('timeupdate', (e) => {
console.log(audio.currentTime);
})
audio.addEventListener('play', (e) => {
console.log('play');
})
audio.addEventListener('pause', (e) => {
console.log('pause');
})
audio.addEventListener('waiting', (e) => {
console.log('waiting');
})
audio.addEventListener('playing', (e) => {
console.log('playing');
})
audio.addEventListener('ended', (e) => {
console.log('ended');
})
<button id="ctrl">play/pause</button>
const audio = new Audio(); audio.src = 'Alizee.mp3' audio.pause();
const audio = document.getElementById('audio');
audio.src = '/music/Alizee-La Isla Bonita.mp3';
let tag = document.querySelector('.custom-audio');
let ctrl = document.getElementById('ctrl');
let cur = document.getElementById('cur');
let dur = document.getElementById('dur');
audio.addEventListener('durationchange', () => {
dur.innerHTML = time(audio.duration);
})
audio.addEventListener('timeupdate', () => {
let secs = audio.currentTime;
cur.innerHTML = time(audio.currentTime);
let per = (audio.currentTime / audio.duration) * 100 + '%';
tag.style.setProperty('--per', per);
})
ctrl.addEventListener('click', () => {
if (ctrl.className == 'play') {
audio.play()
ctrl.className = 'pause'
} else {
audio.pause()
ctrl.className = 'play'
}
})
function time(secs) {
let min = Math.floor(secs / 60);
let sec = Math.floor(secs % 60);
let secRes = sec > 9 ? `${sec}` : `0${sec}`;
let minRes = min > 9 ? `${min}` : `0${min}`;
return `${minRes}:${secRes}`;
}
const audio = new Audio('/utils/sound/click0.mp3')
document.addEventListener('click', e => {
if (e.target.tagName == 'A') {
e.preventDefault()
audio.play()
audio.addEventListener('ended', () => {
window.location.href = e.target.href
})
}
})