快速入口的列表是其实是之前处理的歌手的数据中的关于title的列表

shorcutList属性是计算属性   通过ret数组中的title计算到的

所以我们要在singer.vue组件中将数据传入到list-view组件

list-vue 组件在props中接受

shortcut快速入口列表  所用到的属性 是计算属性  通过将singer.vue组件中传入到list-view组件中的数据计算得到

将得到的shortcutList数据通过v-for展示在页面

效果图如下

下面来实现功能

1、点击右侧快速入口 左侧的列表跳转到对应位置

实现:给shortcutList一个touchstart方法

 

此时  就已实现点击右侧的快速入口 左侧的歌手列表跳转功能

功能2、滑动右侧的快速入口  左侧的歌手列表对应滑动   我们只需要获取到手指放在右侧快速列表之前的位置 和获取到手指离开右侧快速列表的位置  做差 然后处理快速列表的li的高度 就可以知道变化的索引的值  然后让左侧的歌手列表运动到变化的索引处即可

给shortcutList一个@touchmove.stop.prevent="onShortcutTouchMove"

 

手指放上去的时候:

手指离开的时候:

功能三:当左侧歌手列表滑到对应的位置  右侧快速入口对应索引处高亮显示  此时要监听scroll事件   将左侧列表滚动的scrollY与左侧列表对应的每个区间li的高度将比较   得到currentIndex的值  当右侧快速入口的index===currentIndex时高亮显示

获取各区间高度值

各区间高度对应的值

因为我们之前给height=0 然后前一个的上限值  等于后一个的下限值  所以我们的高度数组中的值 会比右侧列表中的真实数据的个数多一个

监控data   我们需要监控两个值:一个是当scroll滚动列表中的数据变化导致高度变化的时候  我们对应的高度区间也要变化

上图中的scroll属性是儿子组件scroll的  scroll方法是父亲组件listview的

儿子组件:this.scroll.on('scroll',()=>{me.$emit('scroll',pos)})

这行代码的意思是:当我触发滚动事件的时候就向上派发一个名为scroll的方法  还带有参数pos  父组件接受到派发的这个方法之后 就触发自己绑定的方法  本项目中父组件自己绑定的方法叫scroll

$emit()方法的第一个参数scroll要和父组件的@scroll项对应

f父元素触发自己绑定的scroll方法之后  将pos.y的值赋值给了this.scrollY

j接下来我们监控listview中的data的变化  以及scrollY的变化   每次data变了就要重新计算calculateHeight

监控到scrollY的变化然后将_calculateHeight()方法中得到的各区间的数组的高度与scrollY相比较

得到对应的currentIndex

用Vue来实现音乐播放器(十七):歌手页右侧快速入口实现的更多相关文章

  1. vue小练习--音乐播放器

    1 首先建一个文件夹 放几首歌曲 2 看代码 1)基本版本 <!DOCTYPE html> <html lang="zh-CN"> <head> ...

  2. 用Vue来实现音乐播放器(十八):右侧快速入口点击高亮

    问题一:当我们点击右侧快速入口的时候  被点击的地方高亮 首先我们要知道右侧快速入口是为什么高亮??因为当watch()监控到scrollY的变化了的时候  将scrollY的值和listHeight ...

  3. 用Vue来实现音乐播放器(三十八):歌词滚动列表的问题

    1.频繁切换歌曲时,歌词会跳来跳去 原因: // 歌词跳跃是因为内部有一个currentLyric对像内部有一些功能来完成歌词的跳跃 //每个currentLyric能实现歌曲的播放跳到相应的位置 是 ...

  4. Vue实战:音乐播放器(一) 页面效果

    先看一下效果图 首页 歌单详情页 歌手列表 歌手详情页 排行页面 榜单的详情页(排序样式) 搜索页面 搜索结果 播放器内核 歌词自动滚动 播放列表 用户中心

  5. 用Vue来实现音乐播放器(九):歌单数据接口分析

    z这里如果我们和之前获取轮播图的数据一样来获取表单的数据  发现根本获取不到 原因是qq音乐在请求头里面加了authority和refer等 但是如果我们通过jsonp实现跨域来请求数据的话  是根本 ...

  6. 用Vue来实现音乐播放器(八):自动轮播图啊

    slider.vue组件的模板部分 <template> <div class="slider" ref="slider"> <d ...

  7. 用Vue来实现音乐播放器(二十三):音乐列表

    当我们将音乐列表往上滑的时候   我们上面的歌手图片部分也会变小 当我们将音乐列表向下拉的时候   我们的图片会放大 当我们将音乐列表向上滑的时候   我们的图片有一个高斯模糊的效果 并且随着我们的列 ...

  8. 用Vue来实现音乐播放器(二十一):歌手详情数据抓取

    第一步:在api文件夹下的singer.js中抛出getSingerDetail方法 第二步:在singer-detail.vue组件中引入api文件夹下的singer.js和config.js 第三 ...

  9. 用Vue来实现音乐播放器(二十):Vuex初始化及歌手数据的配置

    state:所有组件的所有状态和数据  放入同一个内存空间去管理 我们把它称为state Vue Components:state里面的数据可以方便的映射到组件上 然后渲染组件 Actions:当组件 ...

随机推荐

  1. linux下装python3以及pip3

    1.wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 2.tar zxvf Python-3.6.0.tgz 3.cd Pyt ...

  2. WNMP环境搭建步骤 nginx1.4.3+php-5.3.27+mysql-5.5+RunHiddenConsole

    安装目录:D:/webServer/所需软件:     mysql-installer-community-5.5.34.0.msi         下载:http://cdn.mysql.com/D ...

  3. mac安装卸载brew

    1.安装 访问https://brew.sh,copy图中的命令到命令行中,进行下载安装 2.卸载 官方版本的卸载: /usr/bin/ruby -e "$(curl -fsSL https ...

  4. HTML A标签 href click事件冲突

    转自:https://blog.csdn.net/xinglu/article/details/45199337

  5. Nginx设置上传文件大小限制

    就是nginx对上传的图片大小有了限制嘛,所以更改nginx的配置文件就好了 client_max_body_size 1000m; 参考:https://blog.csdn.net/TitanSee ...

  6. mknod - 建立块专用或字符专用文件

    总览 mknod [options] name {bc} major minor mknod [options] name p GNU 选项(缩写): [-m mode] [--help] [--ve ...

  7. Linux日常之以当前时间命名文件

    要求:将当前硬件信息的内容统一以一个文件的形式写入目录date中,且该文件是以“cpu_当前时间.txt”方式命名:    实现该要求主要理解三方面: (1) 显示当前硬件信息的命令:lscpu (2 ...

  8. jenkins插件send files or execute commands over ssh插件parameterized publishing选项使用

    1.设置一个参数 2.设置label 3.勾选parameterized publishing

  9. 一个简单mock-server 解决方案

    參考: 测试利器之Mock server 介紹 moco server - download Mockman - download 各种Mock工具比较 JMockit中文网 MockWebServe ...

  10. 31.密码学知识-证书CA/PKI-8——2019年12月19日

    1. 证书 公钥证书(Public-Key Certificate,PKC)其实和驾照很相似,里面记有姓名.组织.邮箱地址等个人信息,以及属于此人的公钥, 并由认证机构(Certification A ...