BetterScroll实现滚动联动

一:左联右(点击左边分类,右边滚动到指定的商品模块)

实现原理:点击左边商品分类,获取下标,与右边的商品列表进行一一对应

第一步:点击分类(绑定点击事件),获取下标

<script>
    //前提条件:让滚动元素可以点击(详情看《核心滚动BetterScroll》)
    this.bs1 = new BetterScroll('.aside', {
      probeType: 3,
      click: true, //让滚动元素可以点击
    });

    methods:{
         //点击商品分类的函数
        clickCate(i){
            console.log(i);
        }
    }
</script>

第二步:给列表标题设置有规律的id

<h3 class="list-title" :id="'title'+i">{{v.name}}</h3>

第三步:滚动到指定的标签

scrollToElement(el, time, offsetX, offsetY, easing)  作用:滚动到指定的目标元素(具体查看BetterScroll官方文档API)

methods:{
    //点击商品分类的函数
    clickCate(i){
        console.log(i);
        this.bs2.scrollToElement('#title'+i, 500);
    }
}

二:右联左(滚动右边的商品列表,左边的商品分类跟着变化)

核心思想:计算出每一个标题的位置,通过滚动事件获取当前位置,再遍历位置数组,判断当前位置在哪个区间,得到对应的下标,就可以设置左边激活下标,并跳过去。  

//计算所有右边列表的位置
let arr = this.list.map((v,i)=>{
  return document.querySelector('#title'+i).offsetTop -  document.querySelector('#title0').offsetTop;
});

//滚动右边列表时左边跟着滚动
this.bs2.on('scroll', pos=>{
  let y = Math.abs(pos.y);

  for(let i=0; i<arr.length-1; i++){
    if( y>=arr[i] && y<arr[i+1] ){ //判断当前滚动值在哪个位置区间,设置左边分类项
      this.activeKey = i;
      this.bs1.scrollToElement('#cate'+i, 300);  //丝滑效果
    }
  }
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种用于构建用户界面的渐进式JavaScript框架,它可以帮助开发者更高效地构建单页面应用程序。而vue-better-scroll是基于Vue的一款优秀的滚动插件,它能够实现更流畅的滚动效果,并且支持上下左右的滚动联动效果。 如果需要实现左右侧菜单的联动效果,我们可以通过使用vue-better-scroll的scrollToElement方法来实现。首先,我们需要在Vue中引入vue-better-scroll插件并进行配置。 在Vue实例的data中,我们可以定义左右两个菜单的数据,例如leftMenu和rightMenu,并在created生命周期中初始化数据。然后,在mounted生命周期中,我们可以通过refs属性获取到两个菜单容器的DOM元素。 接下来,我们需要监听左边菜单的点击事件,当点击左边菜单的某个选项时,我们可以通过调用vue-better-scroll的scrollToElement方法,将右边菜单滚动到对应的位置。通过传递目标元素的选择器或具体的DOM元素,我们可以实现左右菜单的联动效果。 具体实现时,我们可以在左边菜单的点击事件中,使用this.$refs来访问右边菜单容器,并调用scrollToElement方法,将目标元素滚动到可视区域。通过传递选择器或具体DOM元素作为参数,我们可以精确控制滚动的位置。 同时,为了视觉上更好的效果,我们还可以给目标元素添加样式,如高亮当前选中项,以提升用户体验。 最后,通过一系列的事件处理和样式设置,我们就可以实现左右侧菜单的联动demo了。 以上就是使用Vue和vue-better-scroll实现左右侧菜单联动demo的大致思路和步骤。通过合理运用这两个工具,我们可以轻松地实现出一个流畅、友好的用户界面效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值