uniapp scroll-view选中区动态滚动

			<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollLeft" :scroll-with-animation="true">
				<view class="contDis">
					<view :class="selectVip==i ? 'oneCardActive' : ''" class="opt" v-for="(item,i) in list"
						@click="onSelectVip(i)">
						<view class="module">
	                            //这里面写样式
						</view>
					</view>
				</view>
			</scroll-view>
<script>
	export default {
		data() {
			return {
				selectVip: 0,//选中元素i
				scrollLeft: 0, //横向滚动位置(距左)
				scrollWidth: 0,//scroll-view宽度
				list: []//列表数据
			};
		},
		mounted() {
			this.onGetScrollWidth()
		},

		methods: {
			//获取scroll-view宽度
			onGetScrollWidth() {
				const query = uni.createSelectorQuery().in(this);
				query.select('.scroll-view_H').boundingClientRect(e => {
					this.scrollWidth = e.width 
					console.log('获取到', this.scrollWidth)
				}).exec();
				query.selectAll('.opt').boundingClientRect(e => {
					for (let i = 0; i < e.length; i += 1) {
						this.list[i].left = e[i].left; // 子元素离左边的距离
						this.list[i].width = e[i].width //子组件宽度
					}
				}).exec()
			},
			// 点击事件
			onSelectVip(i) {
				this.selectVip = i
				this.scrollLeft = (i - 1) * this.list[i].width 
				// this.scrollLeft = i  * this.list[i].width //最左边
			},

		}
	}
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值