vue3 锚点anchor scrollIntoView实现点击选项页面即滚动的效果

文章讲述了在Vue项目中,如何处理el-select组件的option选中后页面滚动到对应区域的问题。通过绑定DOM节点的id和处理change事件,利用typescript解决类型报错并实现锚点跳转功能。在change事件中调用自定义函数anchorToGroup,将选中的值转换为DOMid并使用scrollIntoView进行页面滚动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

锚点效果:当点击el-select的option后,页面滚动到对应区域

DOM节点绑定id变量

    <div class="category-title" :id="index">
      <h2> {{ index }} </h2>
    </div>

** debut:typescript**
注意:绑定id时报错:runtime-dom.d.ts(425, 3): 所需类型来自属性 “id”,在此处的 “ElementAttrs” 类型上声明该属性

虽然有报错,但可以用,原因是index被看作number,而id需要的是string,解决方式是点开runtime-dom.d.ts(425, 3),id?:string之后添加 | number

El-select绑定change

当el-select的v-model值发生改变时触发change事件

<el-select v-model="groupSelected" class="groupSelected" placeholder="主页" style="width: 1rem;" @change="anchorToGroup">
  <el-option v-for="(item, index) in useAppStore.category" :key="index" :label="item" :value="item" />
</el-select>

锚点跳转事件anchorToGroup

// 自定义函数:锚点跳转分组
const anchorToGroup = (val:string) => {
  console.log('anchorToGroup val:', val)
  const domID = `#${val}`   // 转换成DOM节点的id值
  document.querySelector(domID)?.scrollIntoView(true)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arrow.Light

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值