讲师中心 微信公众号
AI工具推荐 视频效率加速

uni-app怎么实现自定义风格的下拉刷新SVG动画效果

夜瑶酱_6722

夜瑶酱_6722

发布时间:2026-07-14 09:40:07

|

778人浏览过

|

来源于php中文网

原创

App端需禁用原生下拉刷新(pages.json设"enablePullDownRefresh": false),改用scroll-view的refresher插槽挂载SVG动画,并手动管理uni.stopPullDownRefresh()状态。

uni-app怎么实现自定义风格的下拉刷新svg动画效果

App端必须关掉原生下拉,才能用SVG动画

uni-app 的 App 端(iOS/Android)下拉刷新默认是原生容器控制的,enablePullDownRefresh 一开,系统就接管整个手势和 loading 动画,你写的 SVG 根本没机会显示。想让自定义 SVG 动画生效,第一步就是彻底禁用它:"enablePullDownRefresh": false 必须写在 pages.json 对应页面的 style 里——不是写在 JS 里,也不是靠 uni.startPullDownRefresh() 触发时才关。

关掉之后,你得自己监听触顶和下拉距离。别用 scroll-view 模拟(它在 App 端对 touchmove 响应不稳定),而是用页面根容器 + scrolltoupper 事件配合 scrollTop 判断是否触顶,再结合 touchstart/touchmove 计算 deltaY 实现拖拽感。

SVG路径动画在小程序平台根本跑不动

微信小程序渲染层不支持 stroke-dasharray 和 stroke-dashoffset 的 CSS 动画,哪怕你写了 @keyframes 或 inline style 变更,也不会重绘路径。这不是写法问题,是底层限制。H5 和 App 端可以用 document.querySelector('path').getTotalLength() + uni.createAnimation() 驱动 offset 变化,但小程序必须绕开路径描边方案。

  • 小程序推荐改用 <uni-icons> 或 <image>(如 APNG 动画图)做刷新图标,通过 v-if 切换状态
  • 如果坚持用 SVG,得把动画逻辑改成 transform 缩放/旋转,例如 animation.rotate(360).step(),避开 stroke 相关属性
  • 别把 SVG 写在 v-for 里或用 v-html 插入,ref 很可能拿不到真实 DOM 节点;外层套个 <view class="svg-wrapper">,再用 uni.createSelectorQuery().select('.svg-wrapper').select('path') 查找

scroll-view 的 refresher 插槽才是跨端最稳的入口

如果你只针对 H5 + App(不强求小程序),scroll-view 的 refresher-enabled 是目前唯一能稳定挂载自定义 SVG 的位置。它不依赖页面级配置,也不需要手动监听 touch,直接用插槽即可:

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
<scroll-view
  scroll-y
  refresher-enabled
  refresher-threshold="80"
  refresher-background="transparent"
  refresher-default-style="none"
  @refresherrefresh="onRefresh"
  @refresherpulling="onPulling"
  @refresherrestore="onRestore"
>
  <template #refresher>
    <view class="refresh-icon">
      <svg viewBox="0 0 100 100" width="60" height="60">
        <path
          id="loading-path"
          d="M50,20 A30,30 0 0,1 80,50"
          fill="none"
          stroke="#409eff"
          stroke-width="6"
        />
      </svg>
    </view>
  </template>
  <!-- 列表内容 -->
</scroll-view>

关键点:refresher-default-style="none" 必须设,否则系统默认黑圈会盖住你的 SVG;refresher-threshold 建议设到 70–100px,太小 iOS 容易误触发;@refresherpulling 里可以动态更新 SVG 的 transform 或 stroke-dashoffset 值,实现“越拉越满”的视觉反馈。

松手后 loading 状态必须手动管理

无论你用哪种方式触发刷新,只要进了 onRefresh 或 @refresherrefresh 回调,就必须显式调用 uni.stopPullDownRefresh()(App/H5)或设置 refresher-triggered=false(scroll-view 方案)。漏掉这步,动画会卡死,且后续下拉无法再触发回调——因为底层状态没重置。

更隐蔽的问题是:请求失败时更容易忘记调用。比如接口超时、token 过期、网络中断,这些情况都得包在 try/catch 里,确保 uni.stopPullDownRefresh() 或 this.triggered = false 执行。否则用户会以为“页面坏了”,反复下拉也没反应。

SVG 动画本身没有生命周期钩子,它的启停完全依赖你对 triggered、status 这类响应式变量的控制。别指望动画播完自动清理,所有状态切换都要你亲手写清楚。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2543

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

5503

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6530

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

6158

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

883

2024.05.22

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

4191

2023.10.23

canva可画使用技巧汇总
canva可画使用技巧汇总

本专题汇集了PHP中文网精心整理的Canva可画新手使用技巧大全,专为零基础用户打造。无论你是想制作精美海报、PPT还是社交媒体配图,这里都有从注册登录、模板搜索到AI辅助设计、导出分享的全流程保姆级教程。通过深入浅出的图文指南,帮助你快速跨越设计门槛,轻松掌握Canva可画的实用操作,让每个人都能成为设计达人!

264

2026.05.19

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

40

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn