vue3实现导航栏绑定内容锚点+滚动动画

在这里插入图片描述

目前用的两种方法实现:
第一种:原生js实现
注意:因为移动端可滚动区域可能会嵌套在其他架子下,所以需要用到ref获取滚动区域,
正常获取scrollTop:前者基于html,后者基于body
scrollTop = document.documentElement.scrollTop || document.body.scrollTop
获取指定滚动区域(想要谁滚动就指定谁)
scrollTop = commissionDataMainRef.value.scrollTop
首先div上声明ref
在这里插入图片描述
其次,在setup里
const commissionDataMainRef = ref();
然后return 出去
return { commissionDataMainRef }
最后就可以在js中用
commissionDataMainRef.value.scrollTop

代码如下:

定义导航栏

<ul class="navs">
      <li v-for="(item, index) in indexList" :key="item" :class="{active: state.active===index}" @click="scrollTo(index)" >
        {
   {
   item}}
      </li>
</ul>
 indexList.value = ['排名', '极速', '非极速', '退款', '积分']

声明方法

setup(props, {
     attrs, slots, emit, expose }) {
   
    const state = reactive({
   
      active: 0,
      currentActive: null,
      scrollTopLength: 0,
      timer: null
    })
    const commissionDataMainRef = ref()
    let indexList = 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值