微信小程序完美解决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使用手册之一
Mar 24 Javascript
javascript for循环设法提高性能
Feb 24 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
Bootstrap和Java分页实例第一篇
Dec 23 Javascript
详解vue-cli3 中跨域解决方案
Apr 10 Javascript
详解Vue中的scoped及穿透方法
Apr 18 Javascript
浅谈javascript错误处理
Aug 11 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
原生JS实现相邻月份日历
Oct 13 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面向对象之标识映射
2017/06/21 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
Python yield使用方法示例
2013/12/04 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python线程详解
2015/06/24 Python
python如何统计代码运行的时长
2019/07/24 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
中国网上药店领导者:1药网
2017/02/16 全球购物
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
清洁工表扬信
2014/01/08 职场文书
元旦寄语大全
2014/04/10 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android
Python first-order-model实现让照片动起来
2022/06/25 Python