微信小程序完美解决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 处理表单元素的代码
Feb 15 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
javascript三种代码注释方法
Jun 02 Javascript
jQuery的deferred对象使用详解
Sep 25 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 Javascript
javascript实现倒计时提示框
Mar 02 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
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PHP读取Excel类文件
2017/05/15 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
Python如何实现强制数据类型转换
2019/11/22 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
勾股定理课后反思
2014/04/26 职场文书
企业整改报告范文
2014/11/08 职场文书
服务明星事迹材料
2014/12/29 职场文书
付款证明格式范文
2015/06/19 职场文书
老人节主持词
2015/07/04 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js