Vue 開(kāi)發(fā)音樂(lè)播放器之歌手頁(yè)右側(cè)快速入口功能
快速入口的列表是其實(shí)是之前處理的歌手的數(shù)據(jù)中的關(guān)于title的列表

shorcutList屬性是計(jì)算屬性 通過(guò)ret數(shù)組中的title計(jì)算到的
所以我們要在singer.vue組件中將數(shù)據(jù)傳入到list-view組件

list-vue 組件在props中接受

shortcut快速入口列表 所用到的屬性 是計(jì)算屬性 通過(guò)將singer.vue組件中傳入到list-view組件中的數(shù)據(jù)計(jì)算得到

將得到的shortcutList數(shù)據(jù)通過(guò)v-for展示在頁(yè)面

效果圖如下

下面來(lái)實(shí)現(xiàn)功能
1、點(diǎn)擊右側(cè)快速入口 左側(cè)的列表跳轉(zhuǎn)到對(duì)應(yīng)位置
實(shí)現(xiàn):給shortcutList一個(gè)touchstart方法






此時(shí) 就已實(shí)現(xiàn)點(diǎn)擊右側(cè)的快速入口 左側(cè)的歌手列表跳轉(zhuǎn)功能
功能2、滑動(dòng)右側(cè)的快速入口 左側(cè)的歌手列表對(duì)應(yīng)滑動(dòng) 我們只需要獲取到手指放在右側(cè)快速列表之前的位置 和獲取到手指離開(kāi)右側(cè)快速列表的位置 做差 然后處理快速列表的li的高度 就可以知道變化的索引的值 然后讓左側(cè)的歌手列表運(yùn)動(dòng)到變化的索引處即可
給shortcutList一個(gè)@touchmove.stop.prevent="onShortcutTouchMove"

手指放上去的時(shí)候:

手指離開(kāi)的時(shí)候:

功能三:當(dāng)左側(cè)歌手列表滑到對(duì)應(yīng)的位置 右側(cè)快速入口對(duì)應(yīng)索引處高亮顯示 此時(shí)要監(jiān)聽(tīng)scroll事件 將左側(cè)列表滾動(dòng)的scrollY與左側(cè)列表對(duì)應(yīng)的每個(gè)區(qū)間li的高度將比較 得到currentIndex的值 當(dāng)右側(cè)快速入口的index===currentIndex時(shí)高亮顯示
獲取各區(qū)間高度值

各區(qū)間高度對(duì)應(yīng)的值

因?yàn)槲覀冎敖oheight=0 然后前一個(gè)的上限值 等于后一個(gè)的下限值 所以我們的高度數(shù)組中的值 會(huì)比右側(cè)列表中的真實(shí)數(shù)據(jù)的個(gè)數(shù)多一個(gè)

監(jiān)控data 我們需要監(jiān)控兩個(gè)值:一個(gè)是當(dāng)scroll滾動(dòng)列表中的數(shù)據(jù)變化導(dǎo)致高度變化的時(shí)候 我們對(duì)應(yīng)的高度區(qū)間也要變化



上圖中的scroll屬性是兒子組件scroll的 scroll方法是父親組件listview的
兒子組件:this.scroll.on('scroll',()=>{me.$emit('scroll',pos)})
這行代碼的意思是:當(dāng)我觸發(fā)滾動(dòng)事件的時(shí)候就向上派發(fā)一個(gè)名為scroll的方法 還帶有參數(shù)pos 父組件接受到派發(fā)的這個(gè)方法之后 就觸發(fā)自己綁定的方法 本項(xiàng)目中父組件自己綁定的方法叫scroll
$emit()方法的第一個(gè)參數(shù)scroll要和父組件的@scroll項(xiàng)對(duì)應(yīng)

f父元素觸發(fā)自己綁定的scroll方法之后 將pos.y的值賦值給了this.scrollY

j接下來(lái)我們監(jiān)控listview中的data的變化 以及scrollY的變化 每次data變了就要重新計(jì)算calculateHeight
監(jiān)控到scrollY的變化然后將_calculateHeight()方法中得到的各區(qū)間的數(shù)組的高度與scrollY相比較
得到對(duì)應(yīng)的currentIndex



總結(jié)
以上所述是小編給大家介紹的Vue 開(kāi)發(fā)音樂(lè)播放器之歌手頁(yè)右側(cè)快速入口功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Vue3實(shí)現(xiàn)簡(jiǎn)易音樂(lè)播放器組件
- vue仿網(wǎng)易云音樂(lè)播放器界面的簡(jiǎn)單實(shí)現(xiàn)過(guò)程
- Vue.js實(shí)現(xiàn)音樂(lè)播放器
- 基于vue-element組件實(shí)現(xiàn)音樂(lè)播放器功能
- vue一個(gè)頁(yè)面實(shí)現(xiàn)音樂(lè)播放器的示例
- vue音樂(lè)播放器插件vue-aplayer的配置及其使用實(shí)例詳解
- 基于vue-video-player自定義播放器的方法
- vue-video-player視頻播放器使用配置詳解
- vue-music關(guān)于Player播放器組件詳解
- vue實(shí)現(xiàn)簡(jiǎn)易音樂(lè)播放器
相關(guān)文章
Cookbook組件形式:優(yōu)化 Vue 組件的運(yùn)行時(shí)性能
本文仿照Vue Cookbook 組織形式,對(duì)優(yōu)化 Vue 組件的運(yùn)行時(shí)性能進(jìn)行闡述。通過(guò)基本的示例代碼給大家講解,需要的朋友參考下2018-11-11
vue cli4.0項(xiàng)目引入typescript的方法
這篇文章主要介紹了vue cli4.0項(xiàng)目引入typescript的方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
el-form-item?prop屬性動(dòng)態(tài)綁定不生效問(wèn)題及解決
這篇文章主要介紹了el-form-item?prop屬性動(dòng)態(tài)綁定不生效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue中對(duì)虛擬dom的理解知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于vue中對(duì)虛擬dom的理解知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-06-06
在vue+element ui框架里實(shí)現(xiàn)lodash的debounce防抖
今天小編就為大家分享一篇在vue+element ui框架里實(shí)現(xiàn)lodash的debounce防抖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
vue+elementUI實(shí)現(xiàn)多文件上傳與預(yù)覽功能實(shí)戰(zhàn)記錄(word/PDF/圖片/docx/doc/xlxs/txt)
這篇文章主要給大家介紹了關(guān)于利用vue+elementUI實(shí)現(xiàn)多文件上傳與預(yù)覽功能的相關(guān)資料,包括word/PDF/圖片/docx/doc/xlxs/txt等格式文件上傳,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

