日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue实现仿音乐播放器13-实现音乐榜单跳转显以及播放效果

發(fā)布時間:2025/3/19 vue 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue实现仿音乐播放器13-实现音乐榜单跳转显以及播放效果 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

效果

實現(xiàn)

百度音樂獲取列表API說明

例:method=baidu.ting.billboard.billList&type=1&size=10&offset=0

參數(shù): type = 1-新歌榜,2-熱歌榜,11-搖滾榜,12-爵士,16-流行,21-歐美金曲榜,22-經(jīng)典老歌榜,23-情歌對唱榜,24-影視金曲榜,25-網(wǎng)絡(luò)歌曲榜

size = 10 //返回條目數(shù)量

offset = 0 //獲取偏移

完善榜單頁面listcate.vue

<template lang="html"><div><ListCate_List v-for="item in musicTypeJSON" :musicType="item" /></div> </template><script>import MusicType from "../assets/data/musictype.json" import ListCate_List from "../components/ListCate_List"export default {data(){return{musicTypeJSON:[]}},components:{ListCate_List},created(){this.musicTypeJSON = MusicType.currentType} } </script><style lang="css"> </style>

讀取json文件

在assets下的data下新建musictype.json

{"currentType":[1,2,11,21,22,23,24,25] }

用來存取獲取列表的音樂類型

json文件位置:

?

listcate.vue

<template lang="html"><div><ListCate_List v-for="item in musicTypeJSON" :musicType="item" /></div> </template><script>import MusicType from "../assets/data/musictype.json" import ListCate_List from "../components/ListCate_List"export default {data(){return{musicTypeJSON:[]}},components:{ListCate_List},created(){this.musicTypeJSON = MusicType.currentType} } </script><style lang="css"> </style>

?

注:

是通過import MusicType from "../assets/data/musictype.json"? 引入的

然后通過? this.musicTypeJSON = MusicType.currentType 賦值給musicTypeJSON,然后通過

? <ListCate_List v-for="item in musicTypeJSON" :musicType="item" />

循環(huán)遍歷取值。

然后再ListCast_List.vue中直接通過:

? props:{musicType:{type:[String,Number],default:1}},mounted(){const ListCateUrl = this.HOST+"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+this.musicType+"&size=3&offset=0"this.$axios.get(ListCateUrl).then(res => {console.log(res.data)this.listCateData = res.data}).catch(error => {console.log(error);})} }

獲取并使用。

注:

json數(shù)據(jù)是通過import MusicType from "../assets/data/musictype.json"? 引入的

然后通過? this.musicTypeJSON = MusicType.currentType 賦值給musicTypeJSON,然后通過

? <ListCate_List v-for="item in musicTypeJSON" :musicType="item" />

循環(huán)遍歷取值。

然后再ListCast_List.vue中直接通過:

? props:{musicType:{type:[String,Number],default:1}},mounted(){const ListCateUrl = this.HOST+"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+this.musicType+"&size=3&offset=0"this.$axios.get(ListCateUrl).then(res => {console.log(res.data)this.listCateData = res.data}).catch(error = >{console.log(error);<BR>????? })} }

獲取并使用。

在components下新建ListCate_List.vue

用來實現(xiàn)榜單列表

<template lang= "html"><div class= "listcate"><div? tag="div" class= "cate-item"><div class= "item-content"><div class="cate-post"><img :src="listCateData.billboard.pic_s192" :alt="listCateData.billboard.name"></div><ul class= "cate-hot"><li v-for="(item,index) in listCateData.song_list"><span class="col-rank" :title="item.rank">{{ item.rank }}</span><span class="col-title">{{ item.title }} - {{ item.author }}</span></li></ul></div ></div></div> </template><script> export default {name:"listcatelist",data(){return{listCateData:{song_list:[],billboard:{}}}},props:{musicType:{type:[String,Number],default:1}},mounted(){const ListCateUrl = this.HOST+"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+this.musicType+"&size=3&offset=0"this.$axios.get(ListCateUrl).then(res => {console.log(res.data)this.listCateData = res.data}).catch(error => {console.log(error);})} } </script><style lang="css">.listcate{padding: 0 17px 20px;font-size: 16px;background: #fff; }.cate-item {border-bottom: 1px solid #eee;padding: 20px 0; }.item-content {display: flex; }.cate-post {position: relative;color: #fff;font-size: 18px;height: 96px;width: 96px; }.cate-post img {width: 100%;height: 100%; }.cate-item .cate-hot {flex: 1;margin-left: 14px;padding: 6px 0; }.cate-item .cate-hot li {padding: 6px 0;height: 17px;display: flex;flex-direction: row;align-items: center;color: #666;font: 15px 700; }.cate-item .cate-hot li .col-rank {color: #fa6644;font-family: Arial;font-weight: 700;font-style: italic; } .cate-item .cate-hot li .col-title {line-height: 17px;color: #343434;text-indent: 12px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;flex: 1;width: 140px; }</style>

注:

可以輸出以下看API返回的數(shù)據(jù):

1.照片數(shù)據(jù)為:listCateData.billboard.pic_s192


我們可以打開這個url

2.作者、序號、標題屬性

<span class="col-rank" :title="item.rank">{{ item.rank }}</span> <span class="col-title">{{ item.title }} - {{ item.author }}</span>

?

?

至此已經(jīng)實現(xiàn),點擊榜單會顯示榜單列表,下面實現(xiàn)點擊每個榜單進入榜單詳情頁面。

實現(xiàn)榜單詳情

配置路由跳轉(zhuǎn)

在ListCate_List.vue配置路由跳轉(zhuǎn)

? <router-link tag="div" :to="{name:'LicateDetails',params:{musictype:musicType}}" class="item-content"><div class="cate-post"><img :src="listCateData.billboard.pic_s192" :alt="listCateData.billboard.name"></div><ul class="cate-hot"><li v-for="(item,index) in listCateData.song_list"><span class="col-rank" :title="item.rank">{{ item.rank }}</span><span class="col-title">{{ item.title }} - {{ item.author }}</span></li></ul></router-link>

路由跳轉(zhuǎn)到ListDetails,傳遞參數(shù)音樂類型musicType

新建licateDetail.vue

在pages下新建licateDetails目錄,然后在下面新建licateDetails.vue

接受路由參數(shù)并請求歌曲列表數(shù)據(jù)

const licateUrl = this.HOST+"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+this.$route.params.musictype+"&size=10&offset= 0"licateDetails.vue<template lang="html"><div class="listdetails"><div class="banner-img"><img :src="listCateData.billboard.pic_s444" alt=""></div><ul class="list"><router-link :key="index" tag="li" :to="{name:'MusicPlay',params:{songid:item.song_id}}" v-for="(item,index) in listCateData.song_list"><p class="title">{{ item.title }}</p><p class="author">{{ item.author }}</p></router-link></ul></div> </template><script> export default {name:"licatedetails",data(){return{listCateData:{song_list:[],billboard:{}}}},mounted(){const licateUrl = this.HOST+"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+this.$route.params.musictype+"&size=10&offset=0"this.$axios.get(licateUrl).then(res => {this.listCateData = res.data}).catch(error => {console.log(error);})} } </script><style scoped>.banner-img img{width: 100%; }.list{padding: 10px 17px;background: #fff; }.list li{margin: 10px 5px;padding-bottom: 10px;border-bottom: 1px solid #999; }.title{font-size: 18px }.author{font-size: 14px;color: #999 }</style>

詳情路由配置

打開router下的index.js

import LicateDetails from "@/pages/licateDetails/licateDetails"{path:"artistsdetails",name:"ArtistsDetails",component:ArtistsDetails},{path:"licatedetails",name:"LicateDetails",component:LicateDetails}

配置點擊歌曲播放,前面以及講過,不再贅述。

至此音樂榜單數(shù)據(jù)顯示、跳轉(zhuǎn)、詳情功能已經(jīng)完成。

此部分代碼對應(yīng)分階段代碼中階段十

分階段代碼下載位置:

https://download.csdn.net/download/badao_liumang_qizhi/10846557

總結(jié)

以上是生活随笔為你收集整理的Vue实现仿音乐播放器13-实现音乐榜单跳转显以及播放效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。