小程序 和 uni-app 实现tab点击自动居中屏幕显示

本文介绍了如何在uni-app中实现小程序的tab点击后自动居中显示的效果。通过给scroll-view内的元素设置唯一id,结合uni.createSelectorQuery()API获取元素宽高,计算并设置scroll-left属性,实现平滑滚动到选中项居中。同时讲解了mounted生命周期里计算滚动宽度的方法和点击事件处理逻辑。
摘要由CSDN通过智能技术生成

小程序 和 uni-app 实现tab点击自动居中显示 效果

  • <scroll-view scroll-x class="scrollContent" :scroll-left='scorllLeft' scroll-with-animation>
    				<view class="sccontent">
    					<view class="tab-item" :id="'se-'+(index+1)" :class="{'active':index==activeIndex}" @click="activeItem($event,item,index)"  :style="{'marginLeft':index==0?'20rpx':''}" v-for="(item,index) in tabList" :key='index'>{{item.name}}</view>
    				</view>
    		</scroll-view>
    

给scroll 的内部元素添加唯一id属性 方便后续查找 :id="‘se-’+(index+1)"

给scroll-view 设置 :scroll-left=‘scorllLeft’ 属性

mounted生命周期的时候 计算出 scroll-view的宽度 createSelectorQuery() api 自行查找 文档

uni.createSelectorQuery()

返回一个 SelectorQuery 对象实例。可以在这个实例上使用 select 等方法选择节点,并使用 boundingClientRect 等方法选择需要查询的信息

mounted() {
			//初始化求出滚动的宽度
			this.createSelectorQuery().select('.scrollContent').boundingClientRect((rect)=>{
			    this.scrollViewWidth = Math.round(rect.width)
			}).exec()
		},

滚动元素的点击事件

activeItem(e,item,index){
				//赋值选中下标
				this.activeIndex = index
				//自定义事件
				this.$emit('activetab',{
					item,
					index
				})
				//获取点击元素的宽度求出元素一半的宽度
				this.createSelectorQuery().select('#se-'+(index+1)).boundingClientRect((rect)=>{
					this.elWidth = rect.width/2
				}).exec()
				//获取点击元素距离屏幕左边的距离
				let offsetLeft = e.currentTarget.offsetLeft;
				// 当前元素 距离屏幕的左边距离 减去 scroll-view的一半 +加元素的一般的宽度 
				this.scorllLeft = offsetLeft - (this.scrollViewWidth/2) + this.elWidth
			}

最后记得给scroll-view设置滚动的动画属性

scroll-with-animation	Boolean	false	在设置滚动条位置时使用动画过渡
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值