博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Vue来实现音乐播放器(十七):歌手页右侧快速入口实现
阅读量:7121 次
发布时间:2019-06-28

本文共 1301 字,大约阅读时间需要 4 分钟。

 

 

 

 

 

 

 

 

 

快速入口的列表是其实是之前处理的歌手的数据中的关于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

 

 

 

 

 

转载于:https://www.cnblogs.com/catbrother/p/9180940.html

你可能感兴趣的文章
Spring Boot 自动配置原理
查看>>
每日一篇——lodash——array——chunk
查看>>
[译文] 如何在 Node.js 中使用 ES6 语法的 import/export
查看>>
js使用dispatchEvent派发自定义事件
查看>>
Java程序员从阿里、百度面试回来,这些面试题你们会吗?
查看>>
你知道我们平时在CSS中写的%都是相对于谁吗?
查看>>
如何使用 GitHub Flow 给开源项目贡献代码
查看>>
声明 NSString 类型的属性,到底用 strong 还是 copy ?
查看>>
gulp如何打包css、sass编译、自动加css前缀、js压缩、es6转换es5
查看>>
用python批量替换MD文件中的图片地址
查看>>
Linux vi/vim编辑器按键说明
查看>>
Alfred配合翻译功能, 让英语更简单
查看>>
Java面试:投行的15个多线程和并发面试题
查看>>
天天生鲜项目学习之-项目创建
查看>>
数据结构与算法--排序(JS实现)
查看>>
面试知识点突击
查看>>
MySQL-训练题实践
查看>>
Quart2D 画图一 (简单画线、形状)
查看>>
javaScript(三):原型链(共用属性)
查看>>
free VIRL lab
查看>>