微信小程序完美解决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 相关文章推荐
Web层改进II-用xmlhttp 无声息提交复杂表单
Jan 22 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
Sep 15 Javascript
Jquery练习之表单验证实现代码
Dec 14 Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
Nov 21 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
babel的使用及安装配置教程
Feb 22 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
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
JavaScript 拾漏补遗
2009/12/27 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python 监测文件是否更新的方法
2019/06/10 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
工程现场管理求职自荐信
2013/10/02 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
MySQL创建管理HASH分区
2022/04/13 MySQL