微信小程序完美解决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 相关文章推荐
Javascript下判断是否为闰年的Datetime包
Oct 26 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
Dec 30 Javascript
Javascript实现颜色rgb与16进制转换的方法
Apr 18 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
Jun 10 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
EasyUI Tree树组件无限循环的解决方法
Sep 27 Javascript
Angular8路由守卫原理和使用方法
Aug 29 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
深入理解Django的自定义过滤器
2017/10/17 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
django创建超级用户过程解析
2019/09/18 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
物流专业求职计划书
2014/01/10 职场文书
年会活动策划方案
2014/01/23 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
《学会看病》教学反思
2016/02/17 职场文书
JavaScript中reduce()的用法
2022/05/11 Javascript