基于vue和element-ui做的自定义音乐播放控件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 引入样式 -->
		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
		<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js" type="text/javascript" charset="utf-8"></script>
		<!-- 引入组件库 -->
		<script src="https://unpkg.com/element-ui/lib/index.js"></script>
	</head>
	<body>
		<div class="music_box">
			<audio :src="music.url" ref="music"  @loadedmetadata="getmusicLength" @timeupdate="timeUpdate">
				当前浏览器不支持audio
			</audio>
			<div class="play_box" @click="playMusic">
				<img src="img/play.png" v-show="music.play==false" >
				<img src="img/parse.png" v-show="music.play==true" >
			</div>
			<div class="jindu">
				<div class="play_time">{{Math.floor(parseInt(music.currentTime)/60)}}:{{parseInt(music.currentTime)%60}}</div>
				<div class="block">
				    <el-slider class="commonSlider" :show-tooltip="false" v-model="music.currentTime"
							   :max="music.audioLength" @change="changeMusicTime">
					</el-slider>
				  </div>
				<div class="zong_time">{{Math.floor(parseInt(music.audioLength)/60)}}:{{parseInt(music.audioLength)%60}}</div>
			</div>
		</div>
	</body>
	<script type="text/javascript">
		var vm = new Vue({
			el: '.music_box',
			data: {
				music:{
					play: false,//播放还是暂停 true播放中
					audioLength: 0,//audio时长
					url: "http://m801.music.126.net/20220325095159/f569af131b76b1456ebedf9e278adbe1/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/11983356173/ed2f/6024/be41/2dc456563c5f9c9535b75ecb066c0325.mp3",//音频url
					currentTime: 0,//当前播放时间
					lastTime: null,//标记时间戳
				}
			},
			methods: {
				playMusic(){
					if (this.music.play) {
						this.music.play = false;
						this.$refs.music.pause();
					} else {
						this.music.play = true;
						Math.abs(this.music.currentTime - this.$refs.music.currentTime) > 2 ? this.$refs.music.currentTime = this.music.currentTime : '';
						this.$refs.music.play();
						this.$refs.music.muted = false
					}
				},
				changeMusicTime(val){
					console.log(val, 'music')
					if (this.$refs.music) {
						this.$refs.music.currentTime = val;
					}
				},
				getmusicLength(){
					this.music.audioLength = this.$refs.music.duration;
					console.log(this.$refs.music.duration)
				},
				timeUpdate(){
					let nowTime = Date.now()
					let gapTime = 1000;
					if (!this.music.lastTime || nowTime - this.music.lastTime > gapTime) {
						if (this.$refs.music) {
							let time = this.$refs.music.currentTime;
							this.music.currentTime = time;
						}
						this.music.lastTime = nowTime
					}
				},
			},
			mounted() {
				
			}
		})
	</script>
</html>

自定义视频控件同理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值