微信小程序完美解决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 相关文章推荐
js 实现打印网页中定义的部分内容的代码
Apr 01 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
javascript框架设计读书笔记之种子模块
Dec 02 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
Feb 16 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
js实现简易计算器小功能
Nov 18 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
通过实例解析Python return运行原理
2020/03/04 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
jupyter notebook 重装教程
2020/04/16 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
工程现场管理求职自荐信
2013/10/02 职场文书
项目验收申请报告
2015/05/15 职场文书
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
利用Python多线程实现图片下载器
2022/03/25 Python