【vue】点餐菜单:滚动锚点

14 篇文章 0 订阅
7 篇文章 0 订阅

Q:为实现菜单一样点击左侧菜单右侧滚动到对应分类菜品,滚动右侧菜品左侧菜单导航显示到对应分类

①点左侧菜单导航滚动到对应分类菜品

<div v-for="(item,index) in menuleft" :key="index" 
        @click.stop="handleItem(index)">{{item}}</div>

 注意:dom为每个分类层次的div,每个分类对应id为:n_menu

※要记得最外层的rightTop赋个相对样式:

#rightTop {

  position: relative;

}

      handleItem(index){
        this.activeIndex = index;//当前点击index赋值,用于选中样式显示
        let height = document.getElementById("rightTop").scrollTop;//右侧菜品框顶部id为rightTop
        //指定dom到rightId顶端的距离
        let dom = document.getElementById(this.activeIndex+ "_menu");
        let domHeight = dom.offsetTop;
        console.log(height, domHeight);
        document.getElementById("rightTop").scrollTop = domHeight;//滚动到对应位置
      },

②滚动右侧菜品左侧菜单导航显示到对应分类

<div class="right" id="rightTop" @scroll="scrollEvent">

scrollList 为存储的右侧分类的高度[{id:xxx}] 以此判断该到哪个分类标签了

        for (let i = 0; i < this.scrollList.length; i++) {
          if (i > 0) {
            if (
              document.getElementById("rightTop").scrollTop <
                this.scrollList[i].idx &&
              document.getElementById("rightTop").scrollTop + 100 >
                this.scrollList[i - 1].idx
            ) {
              //样式选中
              this.activeIndex = i - 1;
            }
            if( parseInt(document.getElementById("rightTop").scrollTop)+ Number(document.getElementById("rightTop").clientHeight)== Number(document.getElementById("rightTop").scrollHeight)){
                // console.log("当前为最后一个=============",i);
                this.activeIndex = i;
            }
          }
        }

 相关资料来源:

vue+element 学习之路(十三)scrollBy简单实现锚点定位(单向)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值