微信小程序完美解决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的图片懒加载js
Jun 30 Javascript
jquery $.ajax各个事件执行顺序
Oct 15 Javascript
工作中常用到的JS表单验证代码(包括例子)
Nov 11 Javascript
一个很有趣3D球状标签云兼容IE8
Aug 22 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
基于JavaScript实现无限加载瀑布流
Jul 21 Javascript
js 图片转base64的方式(两种)
Apr 24 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
javascript匿名函数中的'return function()'作用
Oct 15 Javascript
写一个Vue Popup组件
Feb 25 Javascript
js实现开关灯效果
Mar 30 Javascript
基于JS实现table导出Excel并保留样式
May 19 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邮件发送,php发送邮件的类
2011/03/24 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
django之常用命令详解
2016/06/30 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
毕业生求职推荐信
2013/11/04 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
班级课外活动总结
2014/07/09 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
重阳节主题班会
2015/08/17 职场文书
68句权威创业名言
2019/08/26 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android