uni–app—-微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点(点击tab跳转对应的元素位置)
<view class="radiusz bg-white pt-[30rpx] z-[999]">
<u-tabs
:list="list"
:current="current"
@change="tabChange"
bg-color="transparent"
:active-color="mainColor"
:bar-width="90"
font-size="24"
:gutter="26"
>
</u-tabs>
</view>
<view
class="px-[20rpx] py-[20rpx] w-full bg-white mb-[30rpx] box-border"
v-for="item in list"
:key="item.id"
>
<view class="text-center" :id="'item' + item.id"
><text class="pr-[10rpx]">———</text>{{ item.name
}}<text class="pl-[10rpx]">———</text></view
>
<view class="mt-[40rpx]">
<u-parse :html="item.content"></u-parse>
</view>
<view class="mt-[40rpx]"
><apply-btn :customClass="customClass" btnText="加盟申请"></apply-btn
></view>
</view>
import { getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance() as any
const customClass = ref('m-auto') //按钮样式
const current = ref(0) // tab默认索引
/**
* @description: 滚动到对应的位置 uni-app锚点定位 、自动吸顶、滚动自动选择对应的锚点
* @param {*} index:tab选中的索引
* @return {*}
*/
const pageScroll = (index: number) => {
nextTick(() => {
const id = list.value[index].id
const query = proxy.createSelectorQuery()
query
.select('#item' + id)
.boundingClientRect((data: Record<string, any>) => {
const query1 = proxy.createSelectorQuery() //需要定义一个新的
query1
.select('.boxz')
.boundingClientRect((res: Record<string, any>) => {
const scrollTop = data.top - res.top // 获取差值
const skewY = 80 // 偏移高度
// 页面开始进行滚动到目标位置
uni.pageScrollTo({
scrollTop: scrollTop > 0 ? scrollTop - skewY : scrollTop + skewY,
duration: 300,
complete: function () {
console.log('滚动完成')
}
})
})
.exec()
})
.exec()
})
}
/**
* @description: 点击tab选项
* @param {*} index :选中的索引
* @return {*}
*/
const tabChange = (index: number) => {
current.value = index
pageScroll(index)
}
原文地址:https://blog.csdn.net/heavenz19/article/details/134637424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_20964.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。