微信小程序完美解决scroll-view高度自适应问题的方法


Posted in Javascript onAugust 08, 2020

第一种情况,scroll-view占据整屏

微信小程序完美解决scroll-view高度自适应问题的方法

scroll-view {

 height: 100vh;

}

第二种情况,scroll-view自适应页面剩余高度

微信小程序完美解决scroll-view高度自适应问题的方法

xml文件

<view class="box"> 
 <view class="box-head"></view>
 <scroll-view class="box-scroll"></scroll-view> 
</view>

wxss文件

.box {
 display: flex;
 flex-direction:column;
 height:100vh;
 overflow:hidden;
}
.box-head {
 flex-shrink: 0;
 height: 50px;
}
.box-scroll {
 flex: 1;
 height: 1px;
}

flex:1 高度依然不会自适应加一个默认高度1px就可以自适应了

通用组件化处理

list.wxml

<scroll-view
 class="list-scroll {{ autoHeight ? 'list-scroll--auto' : '' }}"
 scroll-y
 enable-back-to-top
 bind:scrolltolower="scrolltolower"
>
 <slot></slot>

 <!-- 加载完成 -->
 <view wx:if="{{ finished }}" class="list-loading">
  <view class="list-loading__text">{{ finishedText }}</view>
 </view>

 <!-- 加载效果 -->
 <view wx:elif="{{ loading }}" class="list-loading">
  <van-loading type="spinner" size="20"></van-loading>
 </view>
</scroll-view>

list.scss(需编译成list.wxss)

.list {
 &-scroll {
  flex: 1;
  height: 100vh;

  &--auto {
   height: 1px;
  }
 }

 &-loading {
  margin: 10px 0;
  text-align: center;

  &__text {
   font-size: 16px;
   color: #a6a6a6;
   line-height: 1;
  }
 }
}

list.js

// components/list/list.js
Component({
 externalClasses: ["class"],
 options: {
  virtualHost: true, // 组件虚拟化
 },

 /**
  * 组件的属性列表
  */
 properties: {
  // 加载状态
  loading: {
   type: Boolean,
   value: false,
  },
  // 加载完成
  finished: {
   type: Boolean,
   value: false,
  },
  // 加载完成文字
  finishedText: {
   type: String,
   value: "没有更多了",
  },
  // 自动初始化获取数据
  autoInit: {
   type: Boolean,
   value: true,
  },
  // flex自定适应高度
  autoHeight: {
   type: Boolean,
   value: false,
  },
 },

 /**
  * 组件的方法列表
  */
 methods: {
  /**
   * 滚动到底部阈值
   */
  scrolltolower() {
   // 退出执行
   if (
    this.data.emptyText || // 没有数据
    this.data.loading || // 正在加载
    this.data.finished // 加载完成
   ) {
    return;
   }

   this.setData({
    loading: true,
   });
   this.triggerEvent("load");
  },
 },

 /**
  * 组件声明周期
  */
 lifetimes: {
  attached() {
   // 自动初始化
   if (this.data.autoInit) {
    this.scrolltolower();
   }
  },
 },
});

组件化后一定要设置组件虚拟化。否则高度还是不会自适应

list.json

"component": true,
 "usingComponents": {
  "van-loading": "@vant/weapp/loading/index"
 }

需要安装van-loading或者自己写一个loading效果

使用

全屏

<com-list></com-list>

自适应

<com-list auto-height></com-list>

到此这篇关于微信小程序完美解决scroll-view高度自适应问题的方法的文章就介绍到这了,更多相关小程序scroll-view高度自适应内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
javascript中this做事件参数相关问题解答
Mar 17 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
Jun 25 Javascript
Javascript拓展String方法小结
Jul 08 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
Nov 18 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 Javascript
JavaScript中变量提升和函数提升的详解
Aug 07 #Javascript
javascript中正则表达式语法详解
Aug 07 #Javascript
vue 子组件修改data或调用操作
Aug 07 #Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 #Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
Aug 07 #Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 #Javascript
javascript前端和后台进行数据交互方法示例
Aug 07 #Javascript
You might like
77A一级收信机修理记
2021/03/02 无线电
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php计算一个文件大小的方法
2015/03/30 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python函数中的可变长参数详解
2019/09/12 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
python中re模块知识点总结
2021/01/17 Python
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
我的五年职业生涯规划
2014/01/23 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers