flex解决微信小程序ScrollView等组件高度自适应

小程序页面开发时经常需要用的scroll-viewswiper这两个组件,官方文档显示这两个组件需要设置固定的高度才好用。

当数据列表高度不确定的时候,一开始我是对scroll-view或者swiper高度计算出固定数据。

//获取屏幕可用高度
let screenHeight = wx.getSystemInfoSync().windowHeight;

再用屏幕高度screenHeight减去其他模块高度,后来是利用flex的flex:1完美解决

1.wxml

<!--1. 将页面整体设置为flex布局 page样式
height: 100%;display:flex;flex-direction: column;
-->
<page>

<swiper indicator-dots interval>
  <swiper-item wx:for='{{List}}' wx:key='index'>
    <view style="background-color: {{item}};" class="block">
    </view>
  </swiper-item>
</swiper>

<!-- 2.将scroll-view放在一个view中,flex:1 -->
<view class="scroll">
  <scroll-view class="image-group" scroll-y="true" bindscrolltolower="taskLower" style="height:100%">
    <view class="card" wx:for="{{cardList}}" wx:key='index'>
      {{item.name}}{{index}}
    </view>
  </scroll-view>
</view>

</page>

 2.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    List: ['#3397FF', '#A360EE', '#02B842'],
    cardList: [{
      name: "card"
    }, {
      name: "card"
    }, {
      name: "card"
    }, {
      name: "card"
    }, {
      name: "card"
    }, {
      name: "card"
    }]
  },

  onLoad(options) {

  },
  taskLower() {
    let list = this.data.cardList
    for (let i = 0; i < 6; i++) {
      list.push({ name: "card"})
    }
    this.setData({
      cardList: list
    })
  }
})

3.wxss

page {
  height: 100%;
  display: flex;
  flex-direction: column;
}

.block {
  width: 100%;
  height: 400rpx;
}

.card {
  margin: 10rpx 30rpx;
  height: 160rpx;
  box-shadow: 8px 0px 14px 4px rgba(52, 152, 255, 0.06);
}

.scroll{
  flex: 1;
  overflow: scroll;
}

 4.查看效果

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值