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

html代码:

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

singer页左侧滚动的时候右侧跟随高亮显示的更多相关文章

  1. CSS布局 -- 左侧定宽,右侧自适应

    左侧定宽,右侧自适应 有很多种方法可以实现 缩小窗口试试看? 方案一: 左边左浮动,右边加个margin-left 查看 demo <!DOCTYPE html PUBLIC "-// ...

  2. NEC学习 ---- 布局 -两列, 左侧定宽,右侧自适应

    CSS代码:以下两处代码是NEC中CSS初始化样式和功能性样式.今后的NEC研究中,默认这两处是引用的. /* 这是CSS reset 代码 --- 初始化样式 */ /* reset */ html ...

  3. [转]css实现左侧宽度自适应,右侧固定宽度

    原文地址:https://segmentfault.com/a/1190000008411418 页面布局中经常用会遇到左侧宽度自适应,右侧固定宽度,或者左侧宽度固定,右侧自适应.总之就是一边固定宽度 ...

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

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

  5. css实现div两列布局——左侧宽度固定,右侧宽度自适应(两种方法)

    原文:css实现div两列布局--左侧宽度固定,右侧宽度自适应(两种方法) 1.应用场景 左侧一个导航栏宽度固定,右侧内容根据用户浏览器窗口宽度进行自适应 2.思路 首先把这个问题分步解决,需要攻克以 ...

  6. CSS两列布局——左侧宽度固定,右侧宽度自适应的3种方法

    1.左侧绝对定位法 直接看代码: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  7. 如何用CSS实现左侧宽度固定,右侧自适应(两栏布局)?左右固定中间自适应(三栏布局)呢?

    在前端日常布局中,会经常遇到左侧宽度固定,右侧自适应或者左右两边固定,中间部分自适应的实用场景.本文例子中将列举出两种常用的两栏布局,左侧固定右侧自适应的常用方法以及代码和五种左右固定中间自适应的常用 ...

  8. 给singer的左侧添加fixedTitle,并显示向上滚动偏移效果;

    1.将写好的dom绝对定位到顶部: 2.dom值为singerlist的currentIndex.title(通过计算属性获取),如果有则显示fixedTitle,没有则隐藏: 3.计算diff:当d ...

  9. IOS UIScrollView + UIButton 实现segemet页面和顶部标签页水平滚动效果

    很长一段时间没有写博客了,最近在学习iOS开发,看了不少的代码,自己用UIScrollView和UIButton实现了水平滚动的效果,有点类似于今日头条的主界面框架,效果如下: 代码如下: MyScr ...

随机推荐

  1. spring boot 环境搭建

    1.开发工具 https://spring.io/tools/sts/all 2.demo https://start.spring.io 3.下载maven https://maven.apache ...

  2. CF MVC3此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接 解决方法

    <add name="ProwebEntities" connectionString ="Data Source=.;Integrated Security=tr ...

  3. JDK1.7的一些新特性

    整理了几条对开发可能用到概率高的 1.swicth支持对String的判断:(以前只能支持Int及以下的) switch (s) { case "1": break; case & ...

  4. scala中:: , +:, :+, :::, +++的区别

    4种操作符的区别和联系 一. ::   该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表. 用法为 x::list,其中x为加入到 头部的元素,无论x是列表与否,它都只将成为新生成列 ...

  5. Foundations of Machine Learning: Rademacher complexity and VC-Dimension(2)

    Foundations of Machine Learning: Rademacher complexity and VC-Dimension(2) (一) 增长函数(Growth function) ...

  6. 保存已登录plsql developer的用户名和密码

    1.保存用户名 tools -> Preferences -> User Interface - Options 勾选 Autosave username . 保存 2.保存密码 tool ...

  7. 仿京东左侧菜单 hover效果-简易demo

    简单描述: 用到的知识点 css 中的绝对定位 以及 Js 中的事件冒泡(或事件委托) .cont{display:inline-block;width:200px;height:200px;bord ...

  8. A class file was not written. The project may be inconsistent, if so try refreshing this project and building it. eclipse提示错误

    感觉很奇怪,查看了一下磁盘,发现workspace所在磁盘已经满了,删除一些文件之后,选择项目->Project->Clean...->选择Clean all projects-&g ...

  9. Jmeter——BeanShell PreProcessor的用法

    一.什么是BeanShell BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命 ...

  10. 平衡二叉树AVL - 插入节点后旋转方法分析

    平衡二叉树 AVL( 发明者为Adel'son-Vel'skii 和 Landis)是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1. 首先我们知道,当插入一个节点,从此插入点到树根 ...