点击按钮 滚动条滑动到某个位置

本文介绍如何在Vue项目中,通过JavaScript方法实现点击不同按钮,使得页面滚动条自动滑动到预设的位置,提升用户体验。

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

vue界面:

<el-tabs v-model="active" @tab-click="jumpTitle">
  <el-tab-pane v-for="(item, index) in steps"
               :key="index" :label="item" :name="item"></el-tab-pane>
</el-tabs>(steps里是各个按钮的名字,只有一个按钮的话,可以传id或ref注册的名字到方法中)
<el-card ref="leftNewsDiv" @scroll.native="handleScroll" class="reviewLDCardStyle" :body-style="{ height:'92% ',}" >
  <p class="mianDFont"><img :src="imgurl" class="imgDStyle">1</p>
  <p class="mianDFont"><img :src="imgurl" class="imgDStyle">基本情况</p>
</el-card>

js方法

//根据按钮的不同,跳转到不同的位置

jumpTitle() {
  let nodeList = document.querySelectorAll('.mianDFont');
  let index = this.steps.indexOf(this.active);
  let element = nodeList[index];
  let material = this.$refs.leftNewsDiv.$el;($el是挂载到实际dom上,没有$el则是虚拟dom)
  const scrollTop =element.offsetTop;
//父元素一定要有定位,定位可以是relative,或者resolution,会根据最近的有定位的父元素来计算,若没有定位,就是相对于body的位置
  material.scrollTo({
    top: scrollTop,
    behavior: 'smooth' // 平滑滚动
  });

},
//根据滚动事件,改变tab选中的名字
handleScroll() {
  let nodeList = document.querySelectorAll('.mianDFont');
  nodeList.forEach((item, index) => {
    //获取滚动的高度,加上标题的高度(方便能正好定位到标题)
    let scrollTop = this.$refs.leftNewsDiv.$el.scrollTop;
    if (scrollTop >= item.offsetTop) {
      this.active = this.steps[index];
    }
  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值