[TOC]

#### BScroll 制作左右联动导航

1. 图例

![](https://box.kancloud.cn/94e9f1275e82a1337d1d8a261b9b48a3_373x506.png)

2. 需求:

* [ ] 点击左侧菜单 右侧滚动到对应位置

* [ ] 滚动右侧菜单 左侧跟随联动

3. 实现步骤

* [ ] 监听右侧商品列表滚动Y坐标 scrollY = 0

* [ ] 求出右边商品列表累加的所有高度,存放在一个数组中 goodsList = []

* [ ] 利用计算属性,计算出 scrollY 定位在 goodsList 数组中的区间值

>[danger] 每当监听到scrollY 值改变,计算属性会重新计算,返回最新区间值

* [ ] 公式:

~~~

computed: {

...mapState({

goodsData: state => state.goodsData

}),

currentIndex() {

return this.listHeight.findIndex((item, index) => {

return !this.listHeight[index+1] || (this.scrollY >= item && this.scrollY < this.listHeight[index+1])

})

}

},

~~~

* [ ] 点击左侧按钮,右侧商品列表滚动到对应位置

核心算法:

~~~

scrollTo(index) {

const goodsListEl = Array.from(this.$refs.goodsList.querySelectorAll('li'))

this.listScroll.scrollToElement(goodsListEl[index], 300)

}

~~~

* [ ] 右侧滚动,左侧联动

思考: 要触发左侧菜单导航联动,需要在滚动左侧菜单时,拿到对应索引,然后用scrollToElement 跳转到对应的位置

核心算法:

~~~

// 监听滚动事件

this.listScroll.on('scroll', (pos) => {

const posY = Math.round( Math.abs(pos.y) )

this.scrollY = posY

this.scrollMenu(this.currentIndex);

})

~~~

~~~

scrollMenu(index) {

const menuList = Array.from(this.$refs.goodsMenu.querySelectorAll('li'));

this.menuScroll.scrollToElement(menuList[index], 300, false, -320)

}

~~~

>[danger] 注意: this.scrollY 滚动时改变数据,会触发计算属性重新计算,然后根据计算属性返回的索引值来跳转对应的菜单导航

bscroll 滚动位置_BScroll左右联动导航相关推荐

  1. bscroll 滚动位置_better-scroll初始滚动位置

    1.某些业务需求,需要缓存之前选择的滚动位置.例如记录当前选择列表li的索引,下一次访问该页面的时候初始滚动到该索引.请问better-scroll里面有没有什么好方法?我调用自带的scrollToE ...

  2. bscroll 滚动位置_scroll lock键在哪里?

    展开全部 不同的笔记本,键盘有所区别.有些有Scroll Lock键,有些没有. 你可以在键盘区找e68a84e8a2ad323131333532363134313032313635333133336 ...

  3. VUE饿了么学习笔记(6)goods界面滚动和点击联动的实现

    使用插件Bscroll,在依赖文件package.json中添加版本,在install,run之后使用 1)import BScroll from 2)BScroll实例化的时候要接收一个DOM,此处 ...

  4. vue 页面A转到页面B,B页面停留在A页面的滚动位置

    如果页面A沿Y轴滚动一段距离,然后跳转到页面B;在进入B页面时,B页面已经滚动到页面A的距离,返回页面A,发现A还在之前的滚动位置: 在路由守卫回调中,设置每次进入路由时,将window的scroll ...

  5. wangEditor 菜单栏随页面滚动位置改变(吸顶)问题解决

    wangEditor 菜单栏随页面滚动位置改变(吸顶)问题解决 参考文章: (1)wangEditor 菜单栏随页面滚动位置改变(吸顶)问题解决 (2)https://www.cnblogs.com/ ...

  6. pyqt qscrollarea 设置滚动位置

    现在的问题,当只有一页时,不能判断滚轮滚动方向:多页的话,可以通过位置变化来判断 print(event.pixelDelta().x(), event.pixelDelta().y()) 获取位置: ...

  7. vue 记录滚动位置_vue 路由跳转记住滚动位置,返回时回到上次滚动位置

    方法一: 利用Keep-Alive和监听器 1.首先在路由中引入需要的模块 { path: '/scrollDemo', name: 'scrollDemo', meta: { keepAlive:t ...

  8. android expandablelist 自动滚动,在ExpandableListView中,如何保留滚动位置_android_开发99编程知识库...

    在一些实验之后我做了一个满意的解决,它还保留了很好的滚动位置顶部可见项. 事实上,三种不同部分的信息需要保存和恢复: 状态( e .g列表. 其中组被展开),第一个可见项的索引和优良滚动位置. 不幸的 ...

  9. recyclerview 加载fragment_恢复 RecyclerView 的滚动位置

    您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后,RecyclerView 丢失了它之前保有的滚动位置信息.通常这种情况发生的原因是由于异步加载 Adapter ...

  10. [html] 写一个布局,当页面滚动一定高时,导航始终固定在顶部,反之恢复原位

    [html] 写一个布局,当页面滚动一定高时,导航始终固定在顶部,反之恢复原位 使用粘性定位,position:sticky 记得使用的时候父元素不能使用overflow:hidden和overflo ...

最新文章

  1. 谷歌体三维捕捉新突破:实现后期任意照明修改
  2. 高级指令——hostname指令【作用:操作服务器的主机名(读取、设置)】、id指令【查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…)】、whoami指令、ps -ef指令
  3. py-faster-rcnn用自己的数据训练模型
  4. 如何把一个软件嵌入另一个软件_新增一个软件一个游戏
  5. php 子网掩码正则,验证子网掩码正则表达式代码范例
  6. 生产环境可以用吗_柑橘可以生产果醋吗?柑橘果醋的生产工艺是什么?
  7. 人均阅读18本,揭露2022全国职场人阅读报告
  8. android_ndk_build_flags 配置,Android studio配置NDK问题小结
  9. Android开发环境搭建(Android Studio安装)
  10. kali安装QQ音乐
  11. Golang通过包长协议处理TCP粘包
  12. 小说网接口,根据书库号和小说名查询
  13. 计算机专业助我成长作文600,挫折助我成长作文(精选6篇)
  14. SQLite用户权限
  15. docker命令总结
  16. 计算机软件考研北京学校,软件考研考哪些学校
  17. 网络爬虫:乘风破浪的姐姐
  18. flink学习(五)DataStream API
  19. annaconda 安装 opencv(cv2)
  20. HyperLynx(二十九)高速串行总线仿真(一)

热门文章

  1. php redis 实时聊天,php+redis聊天室
  2. 7-5 判断上三角矩阵
  3. 最近出现Matlab2010b点击matlab.exe运行时,不断提示Activate MathWorks Software,无法正常使用
  4. mysql 批量 插入或更新
  5. iTunes降级操作
  6. matlab符号运算求二阶微分方程,matlab二阶微分方程求解x 0.2x 0.4x=0.2u(t)
  7. YYText-swift,swift版的YYText,优化了yylabel和yytextview的部分扩展
  8. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第二章
  9. 蔡勒公式与Python
  10. MTK通信物料供应表MT7621AT,MT7620A,WIFI6,MT7975D+MT7905D