uniapp swiper 点击当前项居中显示
时间: 2023-08-03 17:07:36 浏览: 193
要实现当前项居中显示,可以通过以下几个步骤:
1. 在 `swiper` 标签上添加 `bindchange` 事件,用来监听当前项的变化。
2. 在 `swiper` 组件中定义一个 `current` 变量,用来记录当前项的下标。
3. 在 `swiper-item` 标签上添加 `catchtap` 事件,用来监听用户点击事件。
4. 在 `catchtap` 事件中,获取当前点击项的下标,并将其赋值给 `current` 变量。
5. 在 `bindchange` 事件中,根据 `current` 变量的值计算出当前项应该居中显示的位置,并通过 `swiper` 组件的 `scrollLeft` 属性实现滚动到该位置。
以下是示例代码:
```
<swiper bindchange="swiperChange" current="{{ current }}">
<swiper-item catchtap="itemClick" wx:for="{{ list }}" wx:key="{{ item.id }}">
<!-- item content -->
</swiper-item>
</swiper>
<script>
Page({
data: {
list: [
// swiper items
],
current: 0 // 当前项下标
},
// swiper change event
swiperChange(e) {
this.setData({
current: e.detail.current
});
// 计算当前项居中显示的位置
let query = wx.createSelectorQuery().in(this);
query.select('.swiper-item').boundingClientRect((rect) => {
let screenWidth = wx.getSystemInfoSync().windowWidth;
let itemWidth = rect.width;
let scrollLeft = e.detail.current * itemWidth - (screenWidth - itemWidth) / 2;
this.setData({
scrollLeft: scrollLeft
});
}).exec();
},
// item click event
itemClick(e) {
let index = e.currentTarget.dataset.index;
this.setData({
current: index
});
}
})
</script>
```
阅读全文