微信小程序完美解决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 1.4.2发布!主要是性能与API
Feb 25 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
Apr 12 Javascript
jquery结合CSS使用validate实现漂亮的验证
Jan 29 Javascript
js实现产品缩略图效果
Mar 10 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
vue webpack打包优化操作技巧
Feb 22 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
Feb 18 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 Javascript
微信小程序实现授权登录
May 15 Javascript
实用的Vue开发技巧
May 30 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
May 30 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实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
用Python编写一个国际象棋AI程序
2014/11/28 Python
python设计模式大全
2016/06/27 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
介绍一下Linux中的链接
2016/06/05 面试题
优秀的茶餐厅创业计划书
2014/01/03 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
个人工作表现自我评价
2015/03/06 职场文书
2015年社区工作总结
2015/04/08 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技