2021-08-19

uni-app页面如何实现描点定位

实现原理
uni-app相关api提供了dom元素距离窗口的位置参数(top,bottom,left,right等),利用最外层元素相与目标元素同时相对于窗口顶部的距离的差值, 从而获取页面需要滚动的距离
参考api

  1. uni.createSelectorQuery() //创建一个SelectorQuery对象
  2. selectorQuery.select(selector)//dom节点选择
  3. boundingClientRect().exec()//
<!-- 模板部分 -->
<template>
	<view class='container'>
		<view class='target_1'></view>
		<view class='target_2'></view>
		<view class='target_3'></view>
		<view class='target_4'></view>
	</view>
	<view @click='goTargetPosition('target_4')'>去那里</view>
</template>
//js部分
goTargetPosition(params){
	uni.createSelectorQuery().select("."+params).boundingClientRect(data=>{//目标元素
	
		uni.createSelectorQuery().select(".container").boundingClientRect(res=>{//最外层元素
			uni.pageScrollTo({
				duration:300,
				scrollTop: Math.abs(res.top - data.top)//页面需要滚动的距离
			)})
		}).exec();
	}).exec();
}

注:需要在生命周期 mounted 后进行调用。

引用参考api链接 :https://uniapp.dcloud.io/api/ui/nodes-info?id=createselectorquery

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值