1.封装scroll.vue的listenScroll属性和方法,用来确定监听listview.vue的滚动事件

2.将listview.vue的listenScroll属性默认设置为true;

3.写scroll(pos)方法,实时监听左侧scroll位置,并根据滚动位置计算滚动到了索引为哪一个值;

4.写calculateHeight方法,计算每个group得高度,并添加到数组listheight中

5.watch用延时函数监听singerlist的数据变化,并重新计算每个group的高度。

6.通过better-scroll监听得到左边的scrolly的变化,然后循环遍历listheight数组,看落在哪一个区间,得到currentIndex=i;

7.给Li添加current类,通过对象,当currentIdnex=index的时候

代码如下:

 1 //scroll.vue
 2    _initScroll(){
 3           if(!this.$refs.wrapper){
 4             return
 5           }
 6           this.scroll = new BScroll(this.$refs.wrapper,{
 7             probeType: this.probeType,
 8             click: this.click
 9           })
10           if(this.listenScroll){//初始化时候判断是否监听滚动
11             let _this=this
12             this.scroll.on('scroll',(pos)=>{
13               _this.$emit('scroll',pos)
14             })
15           }
16         },
17
18
19 //listview.vue
20   listenLeftScoll(pos){//pos是scroll组件传递过来的
21         this.scrollLeftY=pos.y
22       },
23  _calculateHeight() {//计算左边高度;并用watch监听;
24         this.listHeight = []
25         const list = this.$refs.listGroup
26         let height = 0
27         this.listHeight.push(height)
28         for (let i = 0; i < list.length; i++) {
29           let item = list[i]
30           height += item.clientHeight//求出总高度;
31           this.listHeight.push(height)//listHeight;我们能确定洛在哪一个区间
32
33         }
34       },
35
36   watch:{
37       singerList(){
38         setTimeout(() => {
39           this._calculateHeight()
40         }, 20)
41       },
42       scrollLeftY(newY){
43          const listHeight = this.listHeight
44         console.log(listHeight)
45         if(newY>0){//说明是向下拉,不是向上滚
46            this.currentIndex=0;
47            return
48         }
49         for(let i=0 ; i<listHeight.length -1; i++){//循环看落在哪一个区间
50            let height1 = listHeight[i]
51            let height2 = listHeight[i+1]
52            if(!height2 || (-newY >= height1 && -newY <height2)){
53              this.currentIndex =i
54              // fixedTitle代码
55              this.diff = height2 + newY;//上线与滚动的值,因为newY是负值,相当于减去:然后监视diff的变化
56             return
57           }
58
59         }
60         this.currentIndex = listHeight.length -2
61
62       },
63 }

html代码:

1 <scroll class="listview"
2              :listenScroll="listenScroll"
3              @scroll="listenLeftScoll"
4               :probe-type="probeType"
5              :singerList="singerList"
6              ref="listview">

转载于:https://www.cnblogs.com/yangguoe/p/9458445.html

singer页左侧滚动的时候右侧跟随高亮显示相关推荐

  1. html侧边导航栏跟随页面滚动,页面滚动时,右侧导航栏跟着对应滚动

    页面滚动时,右侧导航栏跟着对应滚动 方法一: 导航栏对应跳转 *{ margin:0px; padding:0px; text-align:center; color:#fff; font-size: ...

  2. 点击左侧导航栏切换右侧商品(左右联动)

    点击左侧导航栏切换右侧商品(左右联动) 菜单栏主要以 A,B,C,D等字母为主,即A,B,C,D等字母为对应该项携带的 id(id不能为汉字或纯数字). 实现该功能的思路:通过点击左侧滑栏的某一项,获 ...

  3. html怎么设置左侧区域宽度,【CSS】左侧定宽、右侧宽度自适应布局

    又是一道前端的面试题,请实现页面布局,包括页头.内容区域.页脚三部分,其中内容区域为左右分栏,左栏定宽200px.右栏自适应宽度. 虽然是以前应用中碰到过的布局,但现场还是没写对,来重新做一下. 双列 ...

  4. html/jsp实现点击左侧目录/菜单,右侧加载不同效果的功能

    效果展示 我做的是计算机组成原理在线学习的知识点总结,左侧是目录,点击左侧的目录,右侧会跳转到相应的知识点,左侧不变. 所用技术:BootStrap,JQuery,html/jsp 页面: 1. se ...

  5. 基于html5海贼王单页视差滚动特效

    分享一款基于html5海贼王单页视差滚动特效是一款流行滑落网页特效代码.效果图如下: 在线预览   源码下载 实现的代码: <div class="top"><d ...

  6. css实现左侧宽度自适应,右侧固定宽度

    页面布局中经常用会遇到左侧宽度自适应,右侧固定宽度,或者左侧宽度固定,右侧自适应.总之就是一边固定宽度,一边自适应宽度. 一般固定宽度是导航栏,自适应宽度的是主体内容显示区. 所以要实现这种布局,就先 ...

  7. H5如何实现图文一行分布且图片在左侧而文字在右侧

    这几天总有人问我关于Web前端设计的作业怎么做呀,有什么代码可以实现啊. 我看了下作业内容,说是难点在于让图文在同一行且图片在左侧而文字在右侧且进行布局. 看完作业内容后我想说的是:"有问题 ...

  8. Unity第一人称手游-左侧控制移动,右侧控制视角和方向(第一人称,类似吃鸡游戏)

    Unity第一人称手游-左侧控制移动,右侧控制视角和方向(第一人称,类似吃鸡游戏) 文章最后会附上 项目下载地址 备注:资源是URP的,普通平台修改资源材质即可 效果图 实现原理及步骤 左侧遥杆移动- ...

  9. android listview左右滑动动画效果,Android基于ListView实现类似QQ空间的滚动翻页与滚动加载效果...

    本文实例讲述了Android基于ListView实现类似QQ空间的滚动翻页与滚动加载效果.分享给大家供大家参考,具体如下: 1. 滚动加载 listView.setOnScrollListener(n ...

最新文章

  1. cpu飙升 死循环_记一次CPU飙升BUG
  2. redis安装+redis主从
  3. C#+Mapxtreme 实现一些GIS系统基本的功能
  4. 如何让你变得魅力十足
  5. iOSMVVM(Model-View(View/ViewController) -ViewModel ) 设计模式
  6. cuSPARSE库:(十四)求解稀疏三角形线性系统(solution of sparse triangular linear systems)
  7. android GitLab使用教程
  8. Excel对比数据差异方法总结
  9. 常见电脑故障处理方法
  10. 网站打开速度慢如何解决
  11. 妻子,情人,玫瑰花,刺木花(转载)
  12. 复杂系统理论解释了Covid为何粉碎世界
  13. Linux CPU 100%问题 | top 命令详解
  14. 图片像素问题:如何保持图片大小不变而图片容量缩小
  15. Debain 安装SVN服务器 支持http/https 全程指导
  16. 活用lambda之list函数处理
  17. 最新代千元机!Redmi Note 9正式发布:性能提升100% 1299元起售!
  18. vue-seamless-scroll 无缝滚动 使用方法
  19. 解决Android v4、v7包导入标红问题import android.support.v4.app.ActivityCompat;import android.support.v7.app
  20. 土地资源管理毕业论文范文

热门文章

  1. softlockup检测(watchdog)原理(用于检测系统调度是否正常)
  2. pip install flask-mongoengine报错
  3. 微信小程序把玩(三十四)Audio API
  4. 【Demo】HTML5 拍照上传
  5. 菜鸟谈算法和数学对写程序的影响
  6. android paint 线宽_Paint setStrokeWidth方法:设置空心线宽
  7. win2008r2服务器维护,win2008 r2 服务器安全设置
  8. git托管怎么使用_使用Git构建和托管网站
  9. devops_您的DevOps阅读心愿单的10本书
  10. cms系统和管理员系统区别_如何成为懒惰的系统管理员