<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 }) } })