亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue實現的網易云音樂在線播放和下載功能案例

2019-11-19 12:07:19
字體:
來源:轉載
供稿:網友

本文實例講述了vue實現的網易云音樂在線播放和下載功能。分享給大家供大家參考,具體如下:

效果如圖:

完整代碼:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta http-equiv="X-UA-Compatible" content="ie=edge">  <title>Document</title>  <style lang="">    html,    body {      height: 100%;      padding: 0;      margin: 0;    }    #app {      height: 100%;      display: flex;    }    #app>#left {      flex: 1;      background-color: skyblue;      text-align: center;      /* 超出滾動 */      overflow: scroll;    }    #app>#right {      flex: 1;      background-color: orange;    }    ul {      list-style: none;      padding: 0;    }    input {      width: 469px;      height: 56px;      margin: 10px auto;      border-radius: 10px;      outline: none;      font-size: 24px;      border: 0;      padding-left: 15px;    }    #left li {      width: 451px;      /* height: 35px; */      margin: 0 auto;      font-weight: 700;      border: 2px solid black;      line-height: 35px;      color: white;      background-color: cadetblue;      overflow: hidden;      text-overflow: ellipsis;      display: -webkit-box;      max-height: 35px;      -webkit-line-clamp: 1;      -webkit-box-orient: vertical;    }    #left li:hover {      cursor: pointer;      background-color: greenyellow;      color: red;    }    #right {      position: relative;      overflow: scroll;    }    audio {      /* position: absolute;      left: 50%;      transform: translateX(-50%) translateY(46px); */      display: block;      margin: 0 auto;    }    /* li標簽過渡的樣式 */    .list-item {      display: inline-block;      margin-right: 10px;    }    .list-enter-active,    .list-leave-active {      transition: all 1s;    }    .list-enter,    .list-leave-to{      opacity: 0;      transform: translateX(100px);    }    /* 設置專輯圖片樣式 */    .cover{      width: 260px;      height: 260px;      border-radius: 50%;      display: block;      margin: 10px auto;      /* transform: translateX(-50%) translateY(10px); */    }    /* 動畫 */    @keyframes autoRotate{      to{        transform: rotateZ(360deg);      }    }    /* 動畫播放樣式 */    .autoRotate{      /* 動畫名,一直播放iteration(一直重復),勻速(timing),時間2s(duration),狀態(running) */      animation-name:autoRotate;      animation-iteration-count:infinite;      animation-timing-function: linear;      animation-duration:2s;      animation-play-state:running;    }    /* 動畫狀態 */    .pause{      animation-play-state:paused;    }    /* 評論 */    .comment{      height: 150px;      /* background-color: skyblue; */    }    .comment li{      display: flex;      padding: 5px;    }    .comment li .left{      width: 120px;      height: 120px;    }    .comment li .left img{      width: 100px;    }    .comment li a{      text-decoration: none;      font-weight: bold;      color: crimson;    }  </style></head><body>  <div id="app">    <!-- 左邊 -->    <div id="left">      <input type="text" value="請輸入你要搜索的歌名" v-model="inputValue" @keyup.enter="search">        <!-- 給li添加過渡 ;v-on:after-enter="afterEnter":鉤子函數-->        <transition-group name="list" tag="ul" v-on:after-enter="afterEnter">        <!-- play(item.id):把id傳過去 -->        <li v-for="(item, index) in musicList" :key="item.id" @dblclick="playMusic(item.id,item.album.id)" :style="{'transition-delay':index*100+'ms'}" >          {{item.name}}-----演唱者:{{item.artists[0].name}}        </li>        </transition-group>    </div>    <!-- 右邊,播放 -->    <div id="right">      <!-- 專輯頁面 -->      <img :src="picUrl" alt="" class="cover autoRotate" :class="{pause:isPause}">      <!-- autoplay:自動播放,controls顯示控件 ;@play="play"是自定義方法-->      <audio :src="songUrl" autoplay controls @play="play" @pause="pause" ></audio>      <h3>精彩評論</h3>      <div class="comment">          <ul>            <!-- 遍歷數組時,需要動畫時才用到key -->              <li v-for="(item, index) in comments" >                <div class="left">                  <img :src="item.user.avatarUrl" alt="">                </div>                <div class="right">                  <a href="#" rel="external nofollow" >{{item.user.nickname}}</a>                  <p>{{item.content}}</p>                </div>              </li>          </ul>      </div>    </div>  </div>  rightv></body><!-- 導入vue --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><!-- 導入vue插件 --><script src="https://cdn.jsdelivr.net/npm/vue-resource@1.5.1"></script><script>  //代碼  /*    音樂播放器    需求1:      搜索歌曲      發送網絡請求      回調函數函數中渲染數據      有動畫    需求2:      雙擊播放歌曲      根據id調用接口      查詢數據      通過audio播放歌曲      獲取專輯的信息 進而獲取封面 展示給用戶    需求3      播放歌曲時        封面轉動      暫停播放時        封面停止轉動    步驟:      1.先寫動畫樣式,動畫命名為autoRotate,因為是一直運動,所以使用animation;      2.同時寫一個暫停的樣式,命名為pause,給data添加一個isPause來存值,默認給一個false      3.添加運動和暫停的步驟是添加上面的兩個類,但是pause要使用v-bind指令來設置屬性;      4.在audio音頻里添加播放和暫停的點擊方法,在對應的方法里設置對應的布爾值;    需求4      點擊播放歌曲      同時獲取這首歌的評論    步驟:1.在數據中聲明一個comments的空數組,用來存評論內容      2.在播放方法中寫獲取評論的接口      3.在響應體里將內容賦值給聲明的數組  */  let app = new Vue({    el: "#app",    data: {      inputValue: '',//輸入的值      musicList: [], //存儲歌列表      songUrl: '',//播放歌曲的url      picUrl:'',//獲取專輯信息      isPause:false,//專輯是否暫停      comments:[]//評論內容    },    methods: {      // li標簽過渡的事件      randomIndex: function () {        return Math.floor(Math.random() * this.items.length)      },      add: function () {        this.items.splice(this.randomIndex(), 0, this.nextNum++)      },      remove: function () {        this.items.splice(this.randomIndex(), 1)      },      //搜索歌曲事件      search() {        //調用接口        this.$http.get(`https://autumnfish.cn/search?keywords=${this.inputValue}`).then(response => {          // console.log(response);          //將結果添加到musicList中          this.musicList = response.body.result.songs;        }, response => {          // error callback          alert("出錯了")        });      },      // 雙擊播放歌曲事件,接收傳過來的id      playMusic(id,albumId) {        //獲取歌曲的url        this.$http.get(`https://autumnfish.cn/song/url?id=${id}`).then(response => {          // console.log(response);          //將結果添加到musicList中          this.songUrl = response.body.data[0].url;        }, response => {          // error callback          alert("出錯了")        });        // 獲取專輯信息        this.$http.get(`https://autumnfish.cn/album?id=${albumId}`).then(res=>{          this.picUrl=res.body.album.blurPicUrl;        }),err=>{}        //獲取評論內容接口        this.$http.get(`https://autumnfish.cn/comment/music?id=${id}&limit=1`).then(res=>{          console.log(res);          this.comments=res.body.hotComments;        }),err=>{          alert('信息錯誤')        }      },      //鉤子函數:動畫執行完后去除了style屬性,不去掉會卡頓      afterEnter(el){        el.style='';      },      // 專輯圖片旋轉事件      play(){        console.log('播放');        this.isPause=false;      },      pause(){        console.log('暫停');        this.isPause=true;      }    },  })</script></html>

如果接口不能使用:請登錄https://github.com/huanggengzhong/NeteaseCloudMusicApi,重新下載開啟服務器即可

希望本文所述對大家vue.js程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极品少妇xxxxx| 欧美在线视频导航| 欧美久久精品午夜青青大伊人| 91久久精品视频| 欧美日韩国产成人在线观看| 国产精品一区久久久| 美日韩精品视频免费看| 在线一区二区日韩| 欧美日韩国产色视频| 一区二区中文字幕| 亚洲香蕉伊综合在人在线视看| 精品久久久久久久大神国产| 日韩电影中文字幕| 国产精品青青在线观看爽香蕉| 亚洲精品视频在线观看视频| 久久久在线视频| 精品性高朝久久久久久久| 91社区国产高清| 奇门遁甲1982国语版免费观看高清| 日韩成人久久久| 日韩电影网在线| 欧美一区二三区| 中文字幕欧美精品日韩中文字幕| 欧美激情在线有限公司| 欧日韩在线观看| 亚洲成人av片在线观看| 中日韩美女免费视频网站在线观看| 亚洲精品国产欧美| 亚洲精品福利资源站| 亚洲成人久久一区| 亚洲精品国偷自产在线99热| 欧洲精品毛片网站| 国产成人激情视频| 国产免费一区视频观看免费| 青青在线视频一区二区三区| 欧美极品美女视频网站在线观看免费| 久久久久国产视频| 最近2019免费中文字幕视频三| 久久久久久久电影一区| 午夜欧美不卡精品aaaaa| 亚洲欧美一区二区三区在线| 国产伦精品一区二区三区精品视频| 亚洲精品久久久久| 亚洲人线精品午夜| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美精品第一页在线播放| 欧美另类69精品久久久久9999| 2025国产精品视频| 国产香蕉97碰碰久久人人| 久久精品这里热有精品| 国内精品久久久| 欧美大秀在线观看| 中文字幕精品网| 欧美性xxxxx极品| 日韩精品免费一线在线观看| 成人激情春色网| 久久精品国亚洲| 久久精品青青大伊人av| 久久亚洲精品小早川怜子66| 久久人人爽人人爽人人片av高请| www高清在线视频日韩欧美| 91精品久久久久久综合乱菊| 国产成人精品综合久久久| 国产精品最新在线观看| 日韩免费中文字幕| 欧美日韩国内自拍| 国产最新精品视频| 黑人精品xxx一区| 亚洲va欧美va在线观看| 国产一区二区三区在线观看视频| 国产视频综合在线| 97在线观看免费| 欧美小视频在线观看| 国产精品免费一区豆花| 久久久国产精品亚洲一区| 欧美激情一区二区久久久| 亚洲精品天天看| 亚洲美女av在线| 2019中文字幕免费视频| 国产精品jvid在线观看蜜臀| 日本亚洲欧洲色α| 亚洲黄色片网站| 中文字幕视频在线免费欧美日韩综合在线看| 日韩av在线免费观看一区| 欧美电影《睫毛膏》| 神马国产精品影院av| 亚洲一区二区日本| 狠狠干狠狠久久| 国产激情久久久久| 国产精品久久久久久亚洲影视| 国产精品主播视频| 欧美日韩国产限制| 欧美日韩美女在线观看| wwwwwwww亚洲| www.xxxx欧美| 欧美日韩亚洲系列| 92国产精品视频| 日韩在线视频中文字幕| 国产婷婷色综合av蜜臀av| 日韩午夜在线视频| 国产精品久久久久久久app| 国产精品日韩在线观看| 欧美精品在线免费| 欧美午夜视频在线观看| 亚洲国产精品yw在线观看| 欧美在线免费视频| 久久精品99久久久久久久久| 成人国产亚洲精品a区天堂华泰| 日本久久久a级免费| 欧美激情喷水视频| 亚洲成人激情小说| 91av免费观看91av精品在线| 亚洲片国产一区一级在线观看| 亚洲一区二区精品| 尤物九九久久国产精品的分类| 久久久久久久影院| 亚洲第一男人av| 精品亚洲男同gayvideo网站| 日本欧美国产在线| 日本老师69xxx| 久久91亚洲人成电影网站| 久久视频免费观看| 久久免费高清视频| 成人国产精品一区二区| 国产欧美日韩亚洲精品| 中文字幕在线看视频国产欧美在线看完整| 亚洲亚裔videos黑人hd| 久久久久国色av免费观看性色| 国产精品免费视频久久久| 91精品久久久久久久| 日韩欧美aaa| 亚洲人成伊人成综合网久久久| 国产成人涩涩涩视频在线观看| 欧美日韩色婷婷| 国产精品第一区| 欧美多人爱爱视频网站| 久久久国产一区二区三区| 98午夜经典影视| 日韩免费在线看| 最近中文字幕mv在线一区二区三区四区| 欧美日韩在线另类| 欧美亚洲国产视频| 欧美精品免费在线观看| 亚洲精品欧美日韩专区| 欧美亚洲另类在线| 亚洲第一av网| 国产精品欧美日韩| 亚洲精品综合久久中文字幕| 欧美激情va永久在线播放| 日韩大片免费观看视频播放| 日韩精品中文字幕久久臀| 日韩亚洲欧美中文在线| 日韩中文字幕在线精品| 精品国产乱码久久久久久婷婷| 狠狠躁夜夜躁久久躁别揉| 亚洲一区免费网站| 国产精彩精品视频| 欧美精品日韩www.p站| 国产精品中文字幕在线| 欧美性猛交丰臀xxxxx网站| 国产成人高清激情视频在线观看| 97欧美精品一区二区三区| 日韩av大片免费看| 亚洲加勒比久久88色综合|