vue实现tabs点击自动滚动居中

此博客介绍了一个基于Vue的UI组件,实现了一个图书分类菜单,通过点击切换和滚动位置调整功能,展示如何动态管理图书类别。通过`tabsOnclick`方法,用户可以流畅地在文学、外国名著等五大类别间切换,而`tabsClickScroll`则实现了菜单的平滑滚动效果。

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

template部分

<ul ref='tabsRef'>
	<li  class="all-style">全部</li>
	<li class="other-tab" @click="tabsOnclick($event)" v-for="item in datas">{{item}}</li>
</ul>

data部分

data{
	return{
		datas:[
		'文学',
		'外国名著',
		'中国名著',
		'四大名著',
		'历史地理'
		]
	}
}
	

methods方法

tabsOnclick(e){
this.tabsClickScroll('tabsRef', e)
}	

tabsClickScroll(refDom, e) {
      let scrollLeft= null
      let scrollRight = null
      let moveDistance = null
      const clientWidthHalf = this.$refs[refDom].clientWidth / 2

      // e.layerX获取元素相对refDom元素的位置
      moveDistance = clientWidthHalf - e.layerX

      scrollLeft= moveDistance
      scrollRight = -(moveDistance)
      
	 // 获取当前元素所在元素的中间位置
      const currentMiddleHalf = (this.$refs[refDom].clientWidth + e.target.offsetWidth) / 2
      // 点击左侧
      // layerX 鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系
      if (e.layerX <= currentMiddleHalf) {
        this.$refs[refDom].scrollLeft -= scrollLeft
      } else {
      // 点击右侧
        this.$refs[refDom].scrollLeft += scrollRight 
      }

      const res= this.$refs[refDom].scrollLeft >= 0 ? this.$refs[refDom].scrollLeft : 0
      this.$refs[refDom].scrollLeft = res
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

追逐梦想之路_随笔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值