uniapp实战 —— 可滚动区域 scroll-view (自适配高度,下拉刷新)

自适配高度

自定义的顶部导航栏,可参考博文
https://blog.csdn.net/weixin_41192489/article/details/134852124

如图可见,在页面滚动过程中,顶部导航栏和底栏未动,仅中间的内容区域可滚动。

  • 整个页面的高度设置为 100%,并采用 flex 布局
  • 滚动区域的高度,通过flex布局的flex-grow实现自适配
html 复制代码
<template>
  <!-- 顶部--自定义的导航栏 -->
  <CustomNavbar />
  <!-- 中间--自适配高度的滚动区 -->
  <scroll-view scroll-y class="contentBox">
  <!-- 此处省略了页面内容的相关代码 -->
  </scroll-view>
</template>
html 复制代码
<style lang="scss">
page {
  background-color: #f7f7f7;
  // 总容器高度撑满屏幕
  height: 100%;
  // 使容器内元素使用flex布局
  display: flex;
  flex-direction: column;
}
.contentBox {
  // 滚动区自适配高度
  flex-grow: 1;
}
</style>
  • 注意事项:此处样式不能加 scoped

下拉刷新

在 scroll-view 标签上新增

js 复制代码
    refresher-enabled
    @refresherrefresh="onRefresherrefresh"
    :refresher-triggered="isTriggered"

js中新增

js 复制代码
// 控制下拉刷新动画的显隐
const isTriggered = ref(false)
// 自定义下拉刷新被触发
const onRefresherrefresh = async () => {
  // 开启下拉刷新动画
  isTriggered.value = true
  // 重置子组件(猜你喜欢)分页相关数据(页码重置为1,清空列表,结束标记重置为false)
  guessRef.value?.resetData()
  // 加载数据--所有接口同时开始刷新,直到耗时最长的接口返回数据
  await Promise.all([getSwiperInfo(), getCategoryInfo(), guessRef.value?.getGuessList()])
  // 关闭下拉刷新动画
  isTriggered.value = false
}
相关推荐
牧艺17 小时前
弹层不用再手算坐标了:CSS Anchor Positioning 从原理到可上线
前端·javascript·css
程序员大阳1 天前
HTML+CSS+JS对话式实战(7)-学生端活动报名功能开发
javascript·css·html·活动报名
码间留白1 天前
六轮真机实验后,我把鸿蒙直播推流的 UI 全逼成了原生——uni-app 适配 HarmonyOS NEXT 完整复盘
uni-app·鸿蒙·harmonyos next·直播推流·arkts/arkui
程序员大阳2 天前
HTML+CSS+JS对话式实战(5)-活动管理页之查看报名名单的实现
javascript·css·html·查看报名名单
曦樂~2 天前
【Web Development】02 CSS
前端·css
东鹏特饮2 天前
经典打砖块(Breakout)游戏
前端·css·css3
wuxianda10303 天前
2026 苹果审核 4.3 (a) 被拒全解析|Guideline 4.3a spam 马甲包拒审原因 + 避坑方案
flutter·uni-app·苹果上架
程序员大阳3 天前
HTML+CSS+JS对话式实战(9)-项目总结与问题分析
javascript·css·html·实战·项目总结
程序员大阳3 天前
HTML+CSS+JS对话式实战(6)-学生端查看活动功能开发
javascript·css·html·模块·查看学生
头发还在的女程序员4 天前
基于 Spring Boot + Vue 3 + uni-app 的灵活用工系统:四端架构与业务流程设计
vue.js·spring boot·uni-app·灵活用工·灵工系统