微信小程序---缓慢展开和收起效果(不需要wx:if控制实现)

这篇博客详细介绍了如何利用WXML和JS在小程序中实现两种展开与收起的动画效果:点击问题展开答案详情,点击添加商品展示内容。核心原理是通过控制元素的高度和overflow属性,结合transition实现平滑过渡。同时还提供了具体的代码示例,包括wxml、js和wxss部分,展示了如何通过数据绑定和事件处理实现交互逻辑。
摘要由CSDN通过智能技术生成

一、能实现效果:

效果一:

点击中间问题,在中间缓慢展开 ,将下面往下撑开,点击再次收起效果

效果二:

点击添加商品,缓慢向下展开,点击收起,缓慢将下面收起效果

二、实现方法:

1、实现的原理:

通过height高度来控制展开或收起,当不需要展示时,高度为0,超过的部分用overflow: hidden;来隐藏,可以通过该方法来让需要展示的页面隐藏起来,然后显示的时候,将height条件去掉,在加上transition来控制动画即可

 2、效果一具体实现方法:

wxml:

<view class='help'>
  <view class='help_item' wx:for="{{questList}}" wx:key="index">
    <view class='title' data-index='{{index}}' catchtap='panel'>
      <view class='title_1'>{{item.title}}</view>
      <view class='title_2'><image src="/pages/images/common/{{item.t ? 'up':'down'}}.png"></image></view>
    </view>
    <view class='detail' style="height:{{ item.t?'':0}}">{{item.content}}</view>
  </view>
</view>

 js部分:

data: {
    showIndex: 10,
    questList: [{
      title: 'Q:这是问题',
      content: "A:答案内答案内容答案内容答案内容答案内容答案内容答案内容容容答案内容容容答案内容容",
      t:false,
    }, {
      title: 'Q:这是问题',
      content: "A:答案内答案内容答案内容答案内容答案内容答案内容答案内容容容答案内容容容答案内容容",
      t:false,
    }, {
      title: 'Q:这是问题',
      content: "A:答案内答案内容答案内容答案内容答案内容答案内容答案内容容容答案内容容容答案内容容",
      t:false,
    }]
  },
panel: function (e) {
    this.data.questList[e.currentTarget.dataset.index].t = !this.data.questList[e.currentTarget.dataset.index].t
    this.setData({
      questList:this.data.questList
    })
    if (e.currentTarget.dataset.index != this.data.showIndex) {
      this.setData({
        showIndex: e.currentTarget.dataset.index,
      })
    } 
    else {
      this.setData({
        showIndex: 10
      })
    }
  },

wxss:

.help {
  width: 700rpx;
  margin: 0 auto;
}

.help .help_item {
  margin: 10rpx auto;
}

.help .help_item .title {
  font-size: 30rpx;
  height: 80rpx;
  line-height: 80rpx;
  /* background: #e2e2e2; */
  border-bottom: 1rpx solid #eeeeee;
  display: flex;
}

.help .help_item .title .title_1 {
  width: 630rpx;
  height: 80rpx;
  padding-left: 20rpx;
}

.help .help_item .title .title_2 {
  width: 50rpx;
  height: 60rpx;
  text-align: center;

}

.help .help_item .title .title_2 image {
  width: 40rpx;
  height: 40rpx;
  margin: 10rpx auto;
}

.help .help_item .detail {
  margin: 10rpx auto;
  font-size: 25rpx;
  line-height: 40rpx;
  font-size: 30rpx;
  height: 300rpx;
  transition: height 1s;
  -moz-transition: height 1s;
  /* Firefox 4 */
  -webkit-transition: height 1s;
  /* Safari and Chrome */
  -o-transition: height 1s;
  /* Opera */
  overflow: hidden;
}

3、效果二实现方法:

原理实现是一样的,只需要将主要部分即可。

.cart-add-box {
  height: 140rpx;//设置好展开需要到什么高度
  transition: height 0.5s;//设置好动画效果
  -moz-transition: height 0.5s;
  -webkit-transition: height 0.5s;
  -o-transition: height 0.5s;
  overflow: hidden;//高度为0时,直接隐藏内容
}

<view class='cart-add-box' style="height:{{ is_add_code?'':0}}">内容:小马哥</view>

通过is_add_code:true/false来展示效果即可。

方法简单,只需要明白实现的原理即可实现自己喜欢的效果

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下代码雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值