<view class="box" style="position:relative;">
<view class="move-item" style="transform:translateX({{transX}}px);width:{{width}}px;"></view>
<view class="item {{active===index?'active':''}}" wx:for="{{list}}" key='*this' bindtap="selectManu" data-ind='{{index}}' style="z-index:2;">{{item}}</view>
</view>
Page({
data: {
list: ['菜单1', '菜单2', '菜单3'],
width:0,
active: 0,
transX:0
},
onLoad() {
let query = this.createSelectorQuery().in(this);
query.select('.item').boundingClientRect(res => {
this.setData({
width:res.width
})
}).exec()
},
selectManu(e) {
if(e.currentTarget.dataset.ind==this.data.active){
return
}
this.setData({
active: e.currentTarget.dataset.ind,
transX:e.currentTarget.dataset.ind*this.data.width
})
},
})
.box{
border-radius: 10rpx;
font-size: 24rpx;
width: 100%;
height: 80rpx;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-around;
padding: 0 10rpx;
box-sizing: border-box;
overflow: hidden;
}
.item{
width: 100%;
height: 60rpx;
text-align: center;
line-height: 60rpx;
border-radius: 10rpx;
}
.move-item{
height: 60rpx;
line-height: 60rpx;
background-color: #E5EBFF;
transition: all .2s ease ;
position: absolute;
border-radius: 10rpx;
left:10rpx;
top:10rpx;
z-index: 0;
}
.active{
color: #2d59df;
}
微信小程序 动画效果切换菜单
最新推荐文章于 2024-07-09 22:25:47 发布
该博客介绍了一种使用微信小程序实现滑动菜单的方法。通过调整`move-item`的`translateX`属性和设置`item`的`active`类来实现选中效果。在`onLoad`中获取元素尺寸,并在`selectManu`事件中更新状态。样式包括圆角、居中、等间距布局以及过渡效果,使得菜单滑动平滑。
摘要由CSDN通过智能技术生成