微信小程序完美解决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 相关文章推荐
toString()一个会自动调用的方法
Feb 08 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
jquery中获取元素里某一特定子元素的代码
Dec 02 Javascript
JavaScript中的DSL元编程介绍
Mar 15 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
Vue实现选择城市功能
May 27 Javascript
JavaScript实现的反序列化json字符串操作示例
Jul 18 Javascript
JS实现数组去重及数组内对象去重功能示例
Feb 02 Javascript
jQuery.parseJSON()函数详解
Feb 28 jQuery
JavaScript 接口原理与用法实例详解
May 12 Javascript
javascript this指向相关问题及改变方法
Nov 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
五年级英语教学反思
2014/01/31 职场文书
男女朋友协议书
2014/04/23 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
工会工作个人总结
2015/03/03 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
导游词之山东八大关
2019/12/18 职场文书
Redis 常见使用场景
2021/08/30 Redis
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js