原生JS实现音频播放

JS原生实现音频播放

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>录音播放</title>
	<style>
		* {
			margin: 0;
			padding: 0;
			list-style: none;
			font-family: '微软雅黑'
		}
		#container {
			width: 450px;
			height: 600px;
			background: #eee;
			margin: 10px auto 0;
			position: relative;
			box-shadow: 0px 0px 16px #999;
			overflow: hidden;
		}
		#title{
			padding:80px 0px 30px 0px;
			display: flex;
			justify-content: center;
		}
		#audio{
			padding:30px 0px 30px 0px;
			display: flex;
			justify-content: center;
		}
		#btnDom{
			display: flex;
			justify-content: center;
		}
		#playBtn{
			width: 80px;
			height: 30px;
			background: linear-gradient(to left, #70b1f5, #4284f7,#FFFFFF);
			border: none;
			border-radius: 4px;
			cursor: pointer;
		}
		#playBtn:hover{
			background: linear-gradient(to left, #a7c0f6, #52a0f8,#FFFFFF);
		}
	</style>
</head>
<body>
	<div id="container">
		   <div id="title">
			     <h2>音频播放</h2>
		   </div>
		   <div id="audio">
			     <!-- controls属性控制音频DOM是否显示 不加这个属性页面上就不会显示这个元素-->
			     <audio id="audioPlay" controls src="./audios/钉钉.m4a"></audio> 
		   </div>
		   <div id="btnDom">
			     <button id="playBtn">播放</button>
		   </div>
	</div>
</body>
<script>
	    var playBtn=document.getElementById('playBtn')  // 获取播放按钮节点
		var audioPlay=document.getElementById('audioPlay') // 获取音频播放节点
		playBtn.addEventListener('click',(e)=>{  // 设置播放按钮点击事件
			audioPlay.currentTime=1  // 设置音频时间
			audioPlay.play() //获取audio标签的元素id然后调用play方法就可以播放了
       })
</script>
</html>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个基本的原生JS音乐播放器,包含播放列表功能: HTML代码: ```html <div id="music-player"> <div class="player-controls"> <button id="play-pause-btn">播放</button> <input type="range" id="seek-slider" min="0" value="0"> <span id="current-time">0:00</span> / <span id="duration">0:00</span> <button id="prev-btn">上一首</button> <button id="next-btn">下一首</button> </div> <ul class="playlist"> <li data-src="path/to/song1.mp3">歌曲1</li> <li data-src="path/to/song2.mp3">歌曲2</li> <li data-src="path/to/song3.mp3">歌曲3</li> </ul> </div> ``` CSS代码: ```css #music-player { width: 500px; margin: 0 auto; } .player-controls { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; } .playlist { list-style: none; margin: 0; padding: 0; } .playlist li { cursor: pointer; padding: 5px; } .playlist li:hover { background-color: #f5f5f5; } ``` JS代码: ```js const musicPlayer = document.getElementById('music-player'); const playPauseBtn = musicPlayer.querySelector('#play-pause-btn'); const seekSlider = musicPlayer.querySelector('#seek-slider'); const currentTimeLabel = musicPlayer.querySelector('#current-time'); const durationLabel = musicPlayer.querySelector('#duration'); const prevBtn = musicPlayer.querySelector('#prev-btn'); const nextBtn = musicPlayer.querySelector('#next-btn'); const playlist = musicPlayer.querySelector('.playlist'); const audio = new Audio(); let currentSongIndex = 0; let playlistItems; // 初始化播放列表 function initPlaylist() { playlistItems = playlist.querySelectorAll('li'); playlistItems.forEach((item, index) => { item.addEventListener('click', () => { currentSongIndex = index; playSong(currentSongIndex); }); }); } // 播放/暂停按钮事件处理函数 function togglePlayPause() { if (audio.paused) { playPauseBtn.textContent = '暂停'; audio.play(); } else { playPauseBtn.textContent = '播放'; audio.pause(); } } // 上一首按钮事件处理函数 function playPrevSong() { currentSongIndex--; if (currentSongIndex < 0) { currentSongIndex = playlistItems.length - 1; } playSong(currentSongIndex); } // 下一首按钮事件处理函数 function playNextSong() { currentSongIndex++; if (currentSongIndex >= playlistItems.length) { currentSongIndex = 0; } playSong(currentSongIndex); } // 播放指定索引的歌曲 function playSong(index) { const songSrc = playlistItems[index].getAttribute('data-src'); audio.src = songSrc; audio.load(); audio.play(); playPauseBtn.textContent = '暂停'; } // 更新播放进度条和当前时间标签 function updateProgress() { seekSlider.value = audio.currentTime; const currentMinutes = Math.floor(audio.currentTime / 60); const currentSeconds = Math.floor(audio.currentTime % 60); currentTimeLabel.textContent = `${currentMinutes}:${currentSeconds.toString().padStart(2, '0')}`; } // 初始化音乐播放器 function initPlayer() { initPlaylist(); audio.addEventListener('loadedmetadata', () => { const totalMinutes = Math.floor(audio.duration / 60); const totalSeconds = Math.floor(audio.duration % 60); durationLabel.textContent = `${totalMinutes}:${totalSeconds.toString().padStart(2, '0')}`; seekSlider.max = audio.duration; }); audio.addEventListener('timeupdate', updateProgress); playPauseBtn.addEventListener('click', togglePlayPause); prevBtn.addEventListener('click', playPrevSong); nextBtn.addEventListener('click', playNextSong); seekSlider.addEventListener('input', () => { audio.currentTime = seekSlider.value; }); playSong(currentSongIndex); } initPlayer(); ``` 这段代码实现了基本的音乐播放器功能,包括播放/暂停、上一首/下一首、播放进度条和播放列表功能。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码De搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值