spz-scrollbar 滚动条
追踪指定容器的滚动进度,通过模板渲染自定义进度条或分步导航控件
布局
布局
跳转到“布局”何时使用
跳转到“何时使用”- 需要展示长内容区域的滚动进度,例如文章阅读进度条。
- 需要为可滚动容器添加自定义分步翻页按钮,逐步浏览内容。
- 需要将特定子元素滚动至容器可视中央位置。
代码演示
跳转到“代码演示”基本用法
跳转到“基本用法”为一个可滚动容器绑定进度条,滚动内容区域时进度条宽度实时更新。
<div class="scrollbar-demo">
<div id="spz-scrollbar-base-container" class="scrollbar-scroll-box">
<p>滚动条组件会追踪容器内的滚动进度,并通过模板渲染进度条或导航按钮。</p>
<p>向下滚动此区域,观察下方进度条的变化。</p>
<p>该组件支持垂直和水平两种滚动方向,可通过 scroll-direction 属性切换。</p>
<p>模板数据包含 progress(0-100 的进度值)、step(当前步骤数)、hasPrev 和 hasNext 标志位。</p>
<p>可以结合 next / prev 方法,配合自定义按钮,实现分步滚动控制。</p>
<p>组件会自适应绑定容器的滚动事件,当容器无滚动条时自动降级为监听页面滚动。</p>
</div>
<spz-scrollbar id="spz-scrollbar-base" layout="container" container="spz-scrollbar-base-container">
<template>
<div class="scrollbar-track" style="width: ${progress}%"></div>
</template>
</spz-scrollbar>
</div>
方法调用
跳转到“方法调用”通过 next 和 prev 方法按固定步长滚动容器,并利用模板中的 hasPrev / hasNext 数据控制按钮的禁用状态。
<div class="scrollbar-api-demo">
<div id="scroll-content-box" class="scrollbar-api-scroll-box">
<p>点击「上一步」和「下一步」按钮,以固定步长滚动此区域的内容。</p>
<p>next 方法将容器向下滚动一个步长;prev 方法向上滚动。</p>
<p>步长由 step 属性控制,默认将总滚动距离等分为 5 步。</p>
<p>进度条实时反映当前滚动位置。按钮在到达边界时自动变灰。</p>
<p>scrollToTarget 方法支持将指定子元素滚动至容器中央。</p>
<p>组件不依赖原生滚动条,UI 完全通过模板自定义。</p>
</div>
<spz-scrollbar
id="spz-scrollbar-api-usage"
layout="container"
container="scroll-content-box"
step="5"
>
<template>
<div class="scrollbar-api-controls">
<button
class="${hasPrev ? '' : 'is-disabled'}"
@tap="spz-scrollbar-api-usage.prev()"
>上一步</button>
<div class="scrollbar-api-track-wrap">
<div class="scrollbar-api-track" style="width: ${progress}%"></div>
</div>
<button
class="${hasNext ? '' : 'is-disabled'}"
@tap="spz-scrollbar-api-usage.next()"
>下一步</button>
</div>
</template>
</spz-scrollbar>
</div>
属性
跳转到“属性”| 属性名 | 说明 | 类型 | 默认值 | 是否必需 |
|---|---|---|---|---|
| container | 要追踪的滚动容器元素的 id |
string | - | 是 |
| step | 将总滚动距离等分为多少步,供 next / prev 方法使用 |
number | 5 |
否 |
| scroll-direction | 滚动方向,可选:vertical | horizontal |
string | vertical |
否 |
模板内的 data 对象格式
跳转到“模板内的 data 对象格式”| 属性名 | 描述 | 类型 |
|---|---|---|
| progress | 滚动进度,范围 0–100 |
number |
| step | 当前所处的步骤数 | number |
| hasPrev | 当前位置是否可以向上/左滚动 | boolean |
| hasNext | 当前位置是否可以向下/右滚动 | boolean |
方法
跳转到“方法”next
跳转到“next”将容器向下(或向右)滚动一个步长的距离,不需要参数。
prev
跳转到“prev”将容器向上(或向左)滚动一个步长的距离,不需要参数。
scrollToTarget
跳转到“scrollToTarget”将容器内指定的子元素滚动至容器的可视中央位置。
| 参数 | 说明 | 类型 | 是否必需 |
|---|---|---|---|
| src | 目标子元素的 src 属性值,组件内部会查找 [src="<value>"] 的元素 |
string | 是,除非提供 target |
| target | 目标子元素的 CSS 选择器 | string | 是,除非提供 src |