uniapp中scroll-view中盒子点击移动至scroll-view可视范围中间
时间: 2023-10-18 21:06:31 浏览: 157
你可以通过以下步骤实现点击盒子后移动至 scroll-view 可视范围中间:
1. 在 scroll-view 中给需要点击的盒子绑定一个点击事件。
2. 在点击事件中获取该盒子的位置信息,包括它距离屏幕顶部的距离和它的高度。
3. 计算出该盒子应该滚动到的位置,即它距离 scroll-view 顶部的距离减去 scroll-view 高度的一半。
4. 调用 scroll-view 的 `scrollTo` 方法将其滚动到计算出的位置。
下面是示例代码:
```html
<template>
<scroll-view class="scroll-view" ref="scrollView">
<div class="box" v-for="(item, index) in list" :key="index" @click="handleClick(index)">
{{ item }}
</div>
</scroll-view>
</template>
<script>
export default {
data() {
return {
list: [1, 2, 3, 4, 5],
};
},
methods: {
handleClick(index) {
// 获取点击的盒子的位置信息
const box = this.$refs.scrollView.$el.querySelectorAll('.box')[index];
const boxOffsetTop = box.offsetTop;
const boxHeight = box.offsetHeight;
// 计算出滚动到的位置
const scrollTop = boxOffsetTop - this.$refs.scrollView.$el.offsetHeight / 2 + boxHeight / 2;
// 滚动到计算出的位置
this.$refs.scrollView.scrollTo({
top: scrollTop,
behavior: 'smooth',
});
},
},
};
</script>
<style scoped>
.scroll-view {
height: 300px;
overflow-y: auto;
}
.box {
height: 50px;
line-height: 50px;
text-align: center;
cursor: pointer;
}
</style>
```
在上面的代码中,我们在 scroll-view 中绑定了一个点击事件 `handleClick`。当点击盒子时,该事件会被触发。在事件处理函数中,我们获取了该盒子的位置信息,并计算出了滚动到的位置。最后,我们调用了 scroll-view 的 `scrollTo` 方法将其滚动到计算出的位置。注意,这里使用了 `behavior: 'smooth'` 让滚动有一个平滑的过渡效果。
阅读全文