vue实现简洁带歌词显示的音乐播放器效果代码

代码语言:html

所属分类:多媒体

代码描述:vue实现简洁带歌词显示的音乐播放器效果代码

代码标签: 歌词 显示 音乐 播放器 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html>

<head>
   
<meta charset="UTF-8">
   
<title></title>
   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script>
   
<style>
       
* {
       
margin: 0px;
       
padding: 0px;
   
}
    body
{background-color: #212121}
   
.clearfix:after {
       
display: block;
       
clear: both;
       
content: ''
   
}
   
   
.fl {
       
float: left;
   
}
   
    li
{
       
list-style: none;
   
}
   
    h3
{
       
font-weight: normal;
   
}
   
   
.main {
       
width: 300px;
       
height: 500px;
       
background: url(//repo.bfw.wiki/bfwrepo/images/player/kegou.jpg)no-repeat center 10px;
       
border-radius: 5px;
       
margin: 50px auto;
       
padding: 10px;
       
color: #fff;
   
}
   
   
.top {
       
text-align: center;
   
}
   
   
.top h3 {
       
font-size: 24px;
       
padding: 10px;
   
}
   
   
.top span {
       
display: inline-block;
       
padding: 0px 2px;
       
border-radius: 5px;
       
margin-left: 8px;
       
font-size: 12px;
       
border: 1px solid #fff;
       
position: relative;
   
}
   
.top span.active{
       
border: 1px solid #85c6e6;
       
background:#078ed0;
   
}
   
.top span img {
       
width: 14px;
       
height: 14px;
       
position: absolute;
       
top: -5px;
       
right: -6px;
       
transform: rotate(30deg);
       
-ms-transform: rotate(30deg);
       
-moz-transform: rotate(30deg);
       
-webkit-transform: rotate(30deg);
       
-o-transform: rotate(30deg);
       
animation: Anim 2s linear 1s infinite;
   
}
   
   
@keyframes Anim {
       
0% {
               
opacity:0;
               
top: -5px;
               
right:-6px;
       
}
       
30% {
               
opacity:1;
               
top: -7px;
               
right:-8px;
       
}
       
65% {
               
opacity:0.5;
               
top: -9px;
               
right:-10px;
       
}
       
100% {
               
opacity:0;
               
top: -12px;
               
right:-12px;
       
}
   
}
   
   
.box {
       
margin-top: 10px;
       
text-align: center;
       
height: 320px;
       
overflow: hidden;
       
position: relative;
   
}
   
   
.info {
       
width: 220px;
       
margin: 0px auto;
       
text-align: center;
       
position: absolute;
       
top: 0px;
       
left: 50%;
       
margin-left: -100px;
   
}
   
   
.info li {
       
padding: 5px;
       
font-size: 12px;
   
}
   
   
.proBar {
       
height: 5px;
       
margin: 17px 10px 10px 10px;
   
}
   
   
.bar {
       
width: 100%;
       
margin: 0px auto;
   
}
   
   
.barTwig {
       
/*background: #58b2dc;*/
       
background: #fff;
       
width: 180px;
       
height: 2px;
       
border-radius: 2px;
       
position: relative;
   
}
   
   
.proBar span {
       
font-size: 12px;
       
margin-top: -7px;
       
margin-right: 8px;
       
width: 32px;
       
height: 16px;
   
}
   
   
.proBar span:last-child {
       
margin-left: 15px;
   
}
   
   
.barBall {
       
position: absolute;
       
left: 0px;
       
top: -3px;
       
width: 8px;
       
height: 8px;
       
border-radius: 50%;
       
background: #fff;
   
}
   
   
.btnRow {
       
text-align: center;
   
}
   
   
.btnRow img {
       
width: 30px;
       
height: 30px;
   
}
   
   
.btnGroup {
       
width: 200px;
       
margin: 0px auto;
       
text-align: center;
       
height: 40px;
   
}
   
   
.btnGroup img {
       
margin: 8px;
       
width: 24px;
       
height: 24px;
       
vertical-align: middle;
   
}
   
   
.btnGroup img:nth-child(2) {
       
width: 30px;
       
height: 30px;
   
}
   
   
.on span {
       
color: #ffe48a;
   
}
   
</style>
</head>

<body>
   
<div id="app">
       
<div id="body">
           
<div class="main" v-for="(item,index) in musicList" :key="index" v-show="item.isShow">
               
<div class="top">
                   
<h3>{{item.title}}</h3>
                   
<p>{{item.txtname}}<span @click="item.focuState=!item.focuState" :class="item.focuState?'active':''">{{item.focuState?'已关注':'+关注'}}<img src="//repo.bfw.wiki/bfwrepo/images/player/heart.png"/ v-show="item.focuState"></span></p>
               
</div>
               
<div class="box">
                   
<ul class="info">
                       
<li v-for="key in item.messageList">
                           
<span>{{key.name}}</span>
                       
</li>
                       
<audio :src="item.audioSrc" @timeupdate="audioClick(index)"></audio>
                   
</ul>
               
</div>
               
<div class="proBar">
                   
<div class="bar clearfix">
                       
<span class="fl">{{newstarTime}}</span>
                       
<div class="barTwig fl">
                           
<div class="barRate" :style="{'width':widthStyle}"></div>
                           
<div class="barBall" id="ball"></div>
                       
</div>
                       
<span class="fl" id="newT">{{newtoalTime}}</span>
                   
</div>
               
</div>
               
<div class="btnGroup">
                   
<img src="//repo.bfw.wiki/bfwrepo/images/player/ljiantou.png" @click="addClick" />
                   
<img :src="btnState ?'//repo.bfw.wiki/bfwrepo/images/player/over.png':'//repo.bfw.wiki/bfwrepo/images/player/open.png'" @click="changeClick" />
                   
<img src="//repo.bfw.wiki/bfwrepo/images/player/rjiantou.png" @click="reduceClick" />
               
</div>
           
</div>
       
</div>
   
</div>
</bo.........完整代码请登录后点击上方下载按钮下载查看

网友评论0