Skip to content

Scroll Area 滚动区域

基于 reka-ui 的 ScrollArea 原语构建的新粗野主义风格滚动区域,带有自定义滚动条样式。

预览

Preview

通知

Alice Chen 赞了你的帖子

2 分钟前

Bob Wang 给你发了消息

5 分钟前

Carol Li 收藏了你的仓库

12 分钟前

David Liu 关注了你

30 分钟前

Eva Zhang 提到了你

1 小时前

Frank Wu 批准了你的 PR

2 小时前

Grace He 评论了议题

3 小时前

Henry Xu 邀请你加入团队

5 小时前

Ivy Zhao 部署到生产环境

8 小时前

Jack Sun 审查了你的代码

1 天前

标签

标签 1标签 2标签 3标签 4标签 5标签 6标签 7标签 8标签 9标签 10标签 11标签 12标签 13标签 14标签 15标签 16标签 17标签 18标签 19标签 20

变体

default
项目 1
项目 2
项目 3
项目 4
项目 5
项目 6
项目 7
项目 8
项目 9
项目 10
项目 11
项目 12
primary
项目 1
项目 2
项目 3
项目 4
项目 5
项目 6
项目 7
项目 8
项目 9
项目 10
项目 11
项目 12
accent
项目 1
项目 2
项目 3
项目 4
项目 5
项目 6
项目 7
项目 8
项目 9
项目 10
项目 11
项目 12

尺寸

sm
项目 1
项目 2
项目 3
项目 4
项目 5
项目 6
项目 7
项目 8
项目 9
项目 10
项目 11
项目 12
default
项目 1
项目 2
项目 3
项目 4
项目 5
项目 6
项目 7
项目 8
项目 9
项目 10
项目 11
项目 12
lg
项目 1
项目 2
项目 3
项目 4
项目 5
项目 6
项目 7
项目 8
项目 9
项目 10
项目 11
项目 12

安装

pnpm dlx brutx-vue@latest add scroll-area

用法

vue
<script setup>
import { ScrollArea } from 'brutx-ui-vue'
</script>

<template>
    <ScrollArea class="h-72 w-48 border-3 border-brutal">
        <div class="p-4">
            <h4 class="mb-4 text-sm font-black leading-none">Tags</h4>
            <div class="space-y-1">
                <div v-for="tag in tags" :key="tag" class="text-sm font-medium">
                    {{ tag }}
                </div>
            </div>
        </div>
    </ScrollArea>
</template>

水平滚动

vue
<script setup>
import { ScrollArea, ScrollBar } from 'brutx-ui-vue'
</script>

<template>
    <ScrollArea class="w-96 border-3 border-brutal">
        <div class="flex w-max space-x-4 p-4">
            <div v-for="artwork in artworks" :key="artwork" class="shrink-0">
                <div class="h-[250px] w-[200px] border-3 border-brutal bg-brutal-muted" />
            </div>
        </div>
        <ScrollBar orientation="horizontal" />
    </ScrollArea>
</template>

变体

控制滚动条边框与滑块颜色。设置在 ScrollArea 上会下发给默认垂直滚动条;手动添加的水平滚动条需在 ScrollBar 上单独设置。

变体边框滑块
defaultborder-brutalbg-brutal-fg
primaryborder-brutal-primarybg-brutal-primary
accentborder-brutal-accentbg-brutal-accent
vue
<script setup>
import { ScrollArea } from 'brutx-ui-vue'

const tags = Array.from({ length: 20 }, (_, i) => `标签 ${i + 1}`)
</script>

<template>
    <ScrollArea variant="primary" class="h-72 w-48 border-3 border-brutal">
        <div class="p-4 space-y-1">
            <div v-for="tag in tags" :key="tag" class="text-sm font-medium">
                {{ tag }}
            </div>
        </div>
    </ScrollArea>
</template>

尺寸

控制滚动条粗细(通过 --scroll-thickness 令牌)。

尺寸粗细
sm0.5rem
default0.75rem
lg1rem
vue
<script setup>
import { ScrollArea } from 'brutx-ui-vue'

const tags = Array.from({ length: 20 }, (_, i) => `标签 ${i + 1}`)
</script>

<template>
    <ScrollArea size="lg" class="h-72 w-48 border-3 border-brutal">
        <div class="p-4 space-y-1">
            <div v-for="tag in tags" :key="tag" class="text-sm font-medium">
                {{ tag }}
            </div>
        </div>
    </ScrollArea>
</template>

子组件

组件说明
ScrollArea根可滚动容器
ScrollBar自定义滚动条(默认垂直,支持水平)

Props

ScrollArea

属性类型默认值说明
variant'default' | 'primary' | 'accent''default'滚动条颜色变体,下发给内部 ScrollBar
size'sm' | 'default' | 'lg''default'滚动条粗细,下发给内部 ScrollBar
classstring自定义样式类

ScrollBar

属性类型默认值说明
orientation'vertical' | 'horizontal''vertical'方向
variant'default' | 'primary' | 'accent''default'滚动条颜色变体
size'sm' | 'default' | 'lg''default'滚动条粗细
classstring自定义样式类

插槽

插槽作用域说明
default滚动内容

可访问性

  • 键盘操作:支持键盘方向键、Page Up/Down、Home/End 键滚动内容
  • ARIA 属性:滚动区域自动设置 role="region"aria-label,滚动条设置适当的 ARIA 属性
  • 滚动条交互:滚动条滑块支持鼠标拖拽和键盘操作,具有可见的焦点指示器
  • 内容溢出:当内容溢出时,屏幕阅读器能够识别可滚动区域并提供导航提示

蛮力铸就。