首页 > 编程语言 >uni-app/微信小程序:scroll-view纵向滚动高度自适应flex布局填充剩余高度

uni-app/微信小程序:scroll-view纵向滚动高度自适应flex布局填充剩余高度

时间:2023-03-22 18:31:59浏览次数:54  
标签:flex 微信 布局 高度 height scroll view

(目录)

文档

  • uni-app文档:https://uniapp.dcloud.net.cn/component/scroll-view.html

使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 css 设置 height

  • 微信文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html

使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height

所以,给scroll-view设置一个固定高度就可以了

方案1:js计算高度

实现原理:

通过js获取设备高度和外层父元素位置信息,动态计算出剩余高度,也就是scroll-view的高度

// 获取总高度
let screenHeight = uni.getSystemInfoSync().windowHeight;

// 布局位置信息
const query = uni.createSelectorQuery().in(this)
    query
      .select('#scroll-view')
      .boundingClientRect((data) => {
        // @ts-ignore
        console.log('得到布局位置信息' + JSON.stringify(data))
        // @ts-ignore
        this.height = `height:${data.height}px;`

      })
      .exec()
<scroll-view   
        v-if="height"
        :style="height"
        bindscrolltolower="scrolltolower" 
        scroll-y
>
</scroll-view>

js的方案有一个弊端,我实际获取布局信息的时候,并没有获取到元素的布局信息,而是获取到了整屏幕的高度

方案2:使用flex布局

该方案和小程序无关,是css的知识

使用flex纵向布局,让scroll-view占满剩余高度

布局示例

<view class="main">
    <view class="title"></view>

    <scroll-view
          scroll-top="scrollTop"
          scroll-y="true"
          class="scroll-view"
          @scrolltolower="handleScrollToLower"
        >
        </scroll-view>
</view>
.main {
    height: 100%;
    display:flex;
    flex-direction: column; // 竖向排列
}

.title{
    height: 100rpx;
}

.scroll-view {
    flex: 1;    // 撑满剩余高度
    height: 0;  // 关键属性,否则scroll-view不生效
}

关键属性是height: 0,如果没有该属性,高度会溢出,不会出现滚动效果

还有一个注意的点,要一直向上检查父元素的高度都是height: 100%;

参考

标签:flex,微信,布局,高度,height,scroll,view
From: https://blog.51cto.com/mouday/6143096

相关文章

  • java 微信支付v3 —7.微信支付之申请退款
    正文不得不说,申请退款和创建订单是非常相似的,流程都一样,只是请求的数据变了,那么我们第一步就是封装请求数据成对象形式,方便后续调用。1.申请退款请求对象微信支付订单......
  • java 微信支付v3 —5.微信支付成功回调
    正文同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。推荐的做法是,当商户系统收到通知进行处理时,先检查对应业务数据的状态,并判断该通知是否已......
  • java 微信支付v3 —6.微信支付查询订单API
    正文什么时候会用到这个API?常规情况下,回调接口已经足够我们使用,用户支付成功后,微信会自动调用我们的回调接口进行回调,那么还需要这个API吗?使用场景:微信服务器故障,我们的服......
  • java 微信支付v3 —3.订单创建准备操作
    正文微信支付的下单操作分为了5种,分别是JSAPI、APP、H5以及Native支付及小程序支付,之所以将支付放在单独一个章节,而不是按照支付类型划分一个章节,是因为支付所传递的数据都......
  • 微信小程序之wx.getLocation再次授权问题解决
    首先,在page外定义一个公共函数用于发送获取位置的请求vargetLocation=function(that){wx.getLocation({type:'wgs84',success:function(res){......
  • 企业数字化转型,微信小程序管理软件来帮忙
    相信很多开发者尝试在自己的App中引入小程序之前,已经是各种不同平台的小程序开发者了。困扰很多开发者许久的问题「如何将已有的小程序集成在自己的App中」在遇到FinCl......
  • 用C#具体写出微信小程序授权登录
    微信小程序授权登录的具体实现步骤如下:1.首先在微信公众平台申请小程序并获得AppID。2.在小程序端调用`wx.login()`方法获取code。3.将code发送到后端服务器,后......
  • Mybatis-Flex 一个优雅的 Mybatis 增强框架
    Mybatis-Flex:更灵活、更轻量、更好用特征很轻量,整个框架只依赖Mybatis再无其他第三方依赖只增强,支持Entity的增删改查、及分页查询,但不丢失Mybatis原有功能内......
  • 微信助手 Mac上好用的一款微信插件
    偶然间在GitHub上看到一个非常好的插件附上插件给大家学习使用更多功能及介绍可查看安装及详细功能介绍迷离/黑夜/上帝/少女皮肤模式少量细节没有做适配,主题模式-关......
  • 微信小程序支持view触发转发分享功能
    #情境今天做项目,特定场景下,我必须要用view标签元素,触发转发分享功能但是,阅读小程序官方文档后,只有两种情况会触发转发操作1.点击小程序右上角的转发按钮2.button标签添加......