vue实现简易音乐播放器


Posted in Vue.js onAugust 14, 2022

本文实例为大家分享了vue实现简易音乐播放器的具体代码,供大家参考,具体内容如下

先看效果

vue实现简易音乐播放器

代码中使用的ivewUI前端框架

使用的是font-awesome字体图标  需要先安装 npm install font-awesome --save

<template>
 <Card style="width:100%">
        <template #title  >
            <Icon type="ios-musical-notes"></Icon>
           音乐播放器
        </template>
        <audio ref="audio" controls="controls" style="width:100%;" :preload="preload">
          <source />
        </audio>
          <h4 style="width: 100%;height: 50px;line-height: 50px; text-align: center;">{{namesong}}</h4>
           <div wrap style="width: 100%; height: 150px;line-height: 150px; text-align: center;">
         
            <ButtonGroup shape="circle">
                <Button type="info" title="上一首" size="large" @click="up(Indexsong)"><i class="fa fa-backward"></i> </Button>
                <Button type="info" title="播放/暂停" size="large" @click="play(namesong,Indexsong)"><i :class="playButton"></i></Button><!--fa fa-pause-->
                <Button type="info" title="下一首" size="large" @click="down(Indexsong)" ><i class="fa fa-forward"></i></Button>
                <Button type="info" title="列表" size="large" @click="IssongListshowhide" ><i class="fa fa-th-list"></i></Button>
            </ButtonGroup>         
         </div>
          <Table :columns="columns" :data="songList" v-show="songListhidden" @click="IssongListshowhide"></Table>
    </Card>
</template>
 
<script>
 
 
    export default {
        data () {
            return {
                   optiontype:["up","play","down"],
                   preload:'auto',
                   Indexsong:0,
                   namesong: '',
                   playButton:'fa fa-play',
                   musicUrl:'',
                   columns: [
        {
          type: 'index',
          title: '序号',
          align: 'center',
          width: 100,
          render: (h, params) => {
            return h(
              'span',
              params.index
            )
          }
        },
                    {
                        title: '歌曲',
                        key: 'song'
                    },
                    {
                        title: '操作',
                       render: (h, params) => {
                           return h('div', [
            
                      h(
                'Button',
                {
                  props: {
                    type: 'info',
                    size: 'small'
                  },                 
                  style: {
                    marginRight: '5px'
                  },
                  on: {
                    click: () => {       
                     this.play(params.row.song,params.index);
                    }
                  }
                },
                  '播放'
              
              )
            
            ])
          }
                    }
                ],
                songList: [
                    {
                        song: '金莎-星月神话.mp3',
                       
                    },
                   {
                        song: '萌萌哒天团-帝都.mp3',
                    },
                   {
                        song: '文武贝-夜的钢琴曲5.mp3',
                    },
                   {
                        song: '乌兰托娅-花桥流水.mp3',
                    },
                    {
                        song: '许嵩-山水之间.mp3',
 
                    },
                    {
                        song: '张杰-三生三世.mp3',
 
                    }
                   
                ],
            
                songListhidden:false
            }
        },
// computed: {  ///存在问题,未能 到底预期效果以换他方式created里实现
//     namesong:{
//       // setter
//       get() {    
//         console.log("get:"+)
//         return this.songList[1].song;
//       }
//       ,
//        set(newval) {  
//         console.log("set:"+newval)  
//         return newval;
//       }
//       }
      
//   },
 
 
         methods:{
       //切换上一曲
       up(index){
         let vm = this;       
          if(index===0){
             this.$Message.success({ title: '提示', content: '已经到顶了喔' })
           return
          }
        
          vm.Indexsong=--index;
          vm.playButton='fa fa-pause'; 
          vm.namesong=vm.songList[vm.Indexsong].song;
          console.log("Indexsong:"+vm.Indexsong+",namesong:"+vm.namesong)
          let  audioplay= this.$refs.audio//播放
 
          vm.musicUrl= require("@/assets/Music/"+vm.namesong)
          audioplay.src = vm.musicUrl;
          audioplay.play();
       },
     //切换下一曲
       down(index){
 
         let vm = this;       
          if(index===vm.songList.length-1){
             this.$Message.success({ title: '提示', content: '已经到底了喔' })
           return
          }
 
          vm.Indexsong=++index;
          vm.playButton='fa fa-pause'; 
          vm.namesong=vm.songList[vm.Indexsong].song;
          console.log("Indexsong:"+vm.Indexsong+",namesong:"+vm.namesong)
          let  audioplay= this.$refs.audio
 
          vm.musicUrl= require("@/assets/Music/"+vm.namesong)
          audioplay.src = vm.musicUrl;
          audioplay.play();//播放
 
       },
         play(song,index){
          
         let vm = this;    
         vm.Indexsong=index;         
         console.log("Indexsong:"+ 
         vm.Indexsong+",song:"+song+",+playButton:"+vm.playButton)  
         if(vm.namesong===song){
 
          if(vm.playButton==="fa fa-play"){
            vm.playButton='fa fa-pause'; 
          let  audioplay= this.$refs.audio
          vm.musicUrl= require("@/assets/Music/"+vm.namesong)
          audioplay.src = vm.musicUrl;
          audioplay.play();//播放
            }else{
          vm.playButton="fa fa-play";
          this.$refs.audio.pause();//暂停    
            }
         }else if(vm.namesong!=song){
 
          console.log("song:"+song)
          console.log("playButton:"+vm.playButton)
          vm.playButton='fa fa-pause'; 
          vm.namesong=song;
          let  audioplay= this.$refs.audio
           console.log("namesong:"+vm.namesong)
          vm.musicUrl= require("@/assets/Music/"+vm.namesong)
          audioplay.src = vm.musicUrl;
          audioplay.play();//播放
         }
 
          },
           IssongListshowhide(){
                let vm = this;
                vm.songListhidden = !vm.songListhidden;          
               }
             }
             ,
          created(){
           //赋值变量
            this.namesong = this.songList[1].song;
            this.Indexsong=1;
           }
 
         
    }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue实现表格合并功能
Dec 01 Vue.js
vue-router定义元信息meta操作
Dec 07 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 #Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 #Vue.js
vue el-table实现递归嵌套的示例代码
Aug 14 #Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 #Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 #Vue.js
Vue深入理解插槽slot的使用
Aug 05 #Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 #Vue.js
You might like
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php调用c接口无错版介绍
2014/03/11 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
js Math 对象的方法
2013/09/01 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
Node.js学习入门
2017/01/03 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
入党函调证明材料
2015/06/19 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书