SuperAPI AI 工具集

load-more

前端与建站

查看项目

更新于 10-16 05:25

技能介绍

用途

Load More 用于在用户主动请求时动态加载额外内容,而不是在页面初始加载时一次性载入全部内容。该模式可以缩短初始页面加载时间,并在用户需要时提供对更多内容的无缝访问。

何时使用

当用户应当按自己的节奏渐进探索内容、而不被一次性大量内容淹没时,使用 Load More。与无限滚动不同,Load More 给予用户明确的控制权,让用户有意识地决定何时查看更多条目。

为提升可用性,请确保在所有内容加载完毕后移除 Load More 按钮,或将其更新为提示没有更多条目(例如“No More Results”)。

常见场景包括:

  • 大型内容列表需要分页(新闻流、商品列表)
  • 通过初始只加载部分数据来改善页面性能
  • 用户渐进浏览,而非一次性需要全部内容
  • 需要一种比无限滚动更具用户控制力的替代方案

何时避免

  • 完整内容列表足够小,可以一次性加载且无性能问题
  • 用户需要同时比较多个条目(此时分页更合适)
  • 需要实时更新或持续数据流

实现流程

  1. 在复制示例前,先确认该模式与问题和约束条件相匹配。
  2. 从 references/pattern.md 中的结构与示例入手,然后选择最小可行的变体。
  3. 在叠加视觉打磨之前,先应用无障碍、性能和交互方面的护栏。
  4. 使用测试指南验证键盘、屏幕阅读器、响应式和失败场景下的行为。

无障碍护栏

ARIA 属性

必需的 ARIA 属性:

  • 使用 aria-controls 将 Load More 按钮与正在更新的内容关联起来。
  • 使用 aria-live="polite" 播报加载状态。
  • 如果按钮在加载全部内容后被移除,更新其 aria-label 以表明没有更多内容可用。

屏幕阅读器支持

实现注意事项:

  • 应在新增内容时告知用户。
  • 确保新条目出现时具有正确的 Tab 焦点顺序。
  • 使用可访问的按钮元素(<button> 而非 <div> 或 <span>)。

性能护栏

目标指标:

  • 初始按钮渲染:页面加载后 < 50ms
  • 加载状态反馈:点击后 < 100ms(即时视觉响应)
  • 内容获取时间:典型批次(10-20 个条目)为 200-500ms
  • 获取后的 DOM 更新:< 100ms 以实现平滑插入
  • 新内容可见的总时间:理想 < 600ms,可接受 < 1000ms

内存注意事项:

  • 每批条目数:10-20 个为最佳(在请求与内存之间取得平衡)
  • DOM 节点:监控总数,超过 100 个条目后考虑虚拟化
  • 图片懒加载:仅在接近视口时加载图片

常见错误

没有视觉反馈

问题:如果点击后没有立即发生任何变化,用户会认为按钮坏了。

修复方法:添加加载指示器或加载动画,并考虑在新内容完全加载前禁用按钮。

一次加载过多条目

问题:大批量内容会拖慢性能、导致布局偏移,并让用户不堪重负。

修复方法:加载更小的块(每次点击 10–20 个条目)。使用增量更新,而非一次性大量数据获取。

强制用户过多点击 Load More

问题:反复点击 Load More 会让用户感到沮丧,并使页面显得无响应。

修复方法:在几次手动加载后尝试滚动自动加载,或在检测到高参与度时增大批次大小。

相关模式

  • https://uxpatterns.dev/patterns/content-management/accordion
  • https://uxpatterns.dev/patterns/forms/button
  • https://uxpatterns.dev/patterns/navigation/infinite-scroll
  • https://uxpatterns.dev/patterns/navigation/pagination

完整实现细节、示例和测试说明,请参见 references/pattern.md。

模式页面:https://uxpatterns.dev/patterns/navigation/load-more