微信小程序 动画效果切换菜单

该博客介绍了一种使用微信小程序实现滑动菜单的方法。通过调整`move-item`的`translateX`属性和设置`item`的`active`类来实现选中效果。在`onLoad`中获取元素尺寸,并在`selectManu`事件中更新状态。样式包括圆角、居中、等间距布局以及过渡效果,使得菜单滑动平滑。
摘要由CSDN通过智能技术生成

在这里插入图片描述



<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;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值