zoukankan      html  css  js  c++  java
  • vue使用vue-aplayer(还用了SiriWave波形动画插件)

    官方文档

    https://aplayer.netlify.app/docs/guide/

    1.下载依赖

    npm install vue-aplayer --save

    2.引用

    import vueAplayer from 'vue-aplayer'

    components: {

    'vueAplayer':vueAplayer

    },

    3.实例(此实例的样式因为要根据项目原型来,所以样式做了修改重置)

    官方效果图:

    我使用时的效果图:

     源码:

    <template>
    <!--  音乐播放器-->
        <div class="my_aplayer">
    <!--动画-->
          <div class="player-canvas" ref="player-canvas"></div>
    
    <!--播放器-->
          <vue-aplayer
            @play="handlePlay"
            v-if="musicList"
            :music='musicList[0]'
            :list='musicList'
            :theme="'#CC1720'"
            :mutex="true"
          />
    
    
        </div>
    </template>
    
    <script>
      import SiriWave from 'siriwave'
      import vueAplayer from 'vue-aplayer'
        export default {
            name: "aplayer",
          props:{
              speed:0,
            musicList:{
              type:Array,
              default:[
                {
                  title: '前前前世',
                  artist: 'RADWIMPS',
                  src: 'http://music.163.com/song/media/outer/url?id=447925558.mp3',
                  pic: '',
                  lrc: 'https://cn-east-17-aplayer-35525609.oss.dogecdn.com/yourname.lrc',
                },
                {
                  title: '光るなら.m3u8',
                  artist: 'Goose house',
                  src: 'http://music.163.com/song/media/outer/url?id=447925558.mp3',
                  pic: '',
                  lrc: 'https://cn-east-17-aplayer-35525609.oss.dogecdn.com/hikarunara.lrc',
                }
                ]
    
    
            }
          },
          components:{
              'vueAplayer':vueAplayer
          },
          mounted() {
            this.initSiriWave()
          },
          methods: {
            //  动画
            initSiriWave() {
              let siriWave = new SiriWave({
                container: this.$refs['player-canvas'],
                660,
                height:360,
                cover: true,
                speed: 0.02,
                amplitude: 0.4,
                frequency: 4,
                color: "#d9dadb"
              })
              siriWave.start()
            },
    
          //  播放事件
            handlePlay(el){
              let targetList = el.target.nextElementSibling.lastElementChild.childNodes;
              for(let i=0;i<targetList.length;i++){
                if(targetList[i].className == 'aplayer-list-light'){
                  let dataIndex = document.querySelectorAll(".aplayer-list ol");
                  dataIndex[0].style.marginTop = `${80 - i*40}px`
                }
              }
            }
    
          },
    
        }
    </script>
    
    <style scoped lang="scss">
      .my_aplayer {
        position: relative;
        /*动画*/
        .player-canvas {
          width: 600px;
          /*overflow: hidden;*/
          position: absolute;
          z-index: 10000;
          left: 60px;
          top: -61px;
        }
        @media (-webkit-min-device-pixel-ratio: 2) {
          .player-canvas {
            margin-top: -4px;
          }
        }
        /*  音乐播放器*/
        .aplayer {
          z-index: 1000000;
          background-color: rgba(0,0,0,0) !important;
          box-shadow: 0 2px 2px 0 rgba(0,0,0,.0), 0 1px 5px 0 rgba(0,0,0,0) !important;
        }
        /deep/ .aplayer-bar-wrap .aplayer-bar .aplayer-played {
          height: 1px;
        }
        /deep/ .aplayer.aplayer-withlist {
          @extend .flexEndStart;
        }
        /deep/ .aplayer-body {
          width: 60%;
          padding-top: 40px;
        }
        /deep/ .aplayer-list {
          width: 30%;
          margin-left: 4%;
        }
        /deep/ .aplayer-body {
          flex-direction: row-reverse;
        }
        /deep/ .aplayer-pic {
          background-image: none;
        }
        /deep/ .aplayer-pic .aplayer-pause {
          @extend .flexCenter;
          width: 32px;
          height: 32px;
          border: 1px solid #c8c9ca;
          background-color: $color-bg;
          bottom: 4px;
          right: 4px;
        }
        /deep/ .aplayer-pic .aplayer-play {
          @extend .flexCenter;
          width: 32px;
          height: 32px;
          border: 1px solid #c8c9ca;
          background-color: $color-bg;
          bottom: 4px;
          right: 4px;
        }
        /deep/ .aplayer-pic .aplayer-pause .aplayer-icon-pause {
          width: 20px;
          height: 20px;
          position: relative;
          top: 0;
          left: 0;
        }
        /deep/ .aplayer-pic .aplayer-play .aplayer-icon-play {
          width: 20px;
          height: 20px;
          position: relative;
          top: 0;
          left: 0;
        }
        /deep/ .aplayer-pic .aplayer-pause {
          margin: 0 -15px -15px 0;
        }
        /deep/ .aplayer-pic .aplayer-button .aplayer-fill {
          fill: $color-main;
        }
        /deep/ .aplayer-icon.aplayer-icon-mode {
          display: none;
        }
        /deep/ .aplayer-icon.aplayer-icon-menu {
          display: none !important;
        }
        /deep/ .aplayer-icon.aplayer-icon-volume-down {
          display: none !important;
        }
        /deep/ .aplayer.aplayer-withlist .aplayer-body .aplayer-info {
          border-bottom: none;
        }
        /deep/ .aplayer .aplayer-body .aplayer-info .aplayer-music {
          color: rgba(0,0,0,0) !important;
        }
        /deep/ .aplayer .aplayer-body .aplayer-info .aplayer-music .aplayer-author {
          color: rgba(0,0,0,0) !important;
        }
    
      /*  重置列表样式*/
        /deep/ .aplayer-list ol li.aplayer-list-light, /deep/ .aplayer-list ol li:hover {
          color: $color-main;
          background-color: $color-bg;
        }
        /deep/ .aplayer-list ol {
          height: auto !important;
          overflow-y: hidden;
          margin-top: 80px;
        }
        /deep/ .aplayer-list ol li, /deep/ .aplayer-list ol li .aplayer-list-author {
          height: 40px;
          line-height: 40px;
          border-top: none;
          color: rgba(0,0,0,.4);
        }
        /deep/ .aplayer-list ol li .aplayer-list-cur {
          width: 0;
        }
    
      /*  重置列表位置*/
        /deep/ .aplayer-list {
          min-height: 230px;
        }
      }
    
    
    </style>
  • 相关阅读:
    9-day9-生成器-列表解析-三元表达式-
    8-day8-列表解析-装饰器-迭代器
    7-day7-闭包函数-装饰器-函数2
    6-day6-函数-1
    5-day5-字符编码-函数-文件操作
    hive 跨年周如何处理
    nginx 安装部署
    logstash 读取kafka output ES
    leedcode 001 之 Two Sum 42.20% Easy
    大数据调度与数据质量的重要性
  • 原文地址:https://www.cnblogs.com/duanzhenzhen/p/13892221.html
Copyright © 2011-2022 走看看