Scroll Area — это компонент, который обеспечивает кастомное управление прокруткой содержимого в пределах ограниченной области. В отличие от стандартных скроллбаров браузера, Scroll Area позволяет создавать стилизованные, адаптивные и анимационные элементы прокрутки, которые полностью интегрируются с современными UI-библиотеками для SvelteKit.
Root и Viewport
Scrollbars
Corner
Простейший пример реализации:
<script>
import { ScrollArea, ScrollViewport, Scrollbar, ScrollThumb, ScrollCorner } from '@sveltekit/ui';
</script>
<ScrollArea class="h-64 w-96 border">
<ScrollViewport>
<div class="p-4">
{#each Array(50) as _, i}
<p>Элемент {i + 1}</p>
{/each}
</div>
</ScrollViewport>
<Scrollbar orientation="vertical">
<ScrollThumb />
</Scrollbar>
<Scrollbar orientation="horizontal">
<ScrollThumb />
</Scrollbar>
<ScrollCorner />
</ScrollArea>
Ключевые моменты:
orientation="vertical" и
orientation="horizontal" позволяют создавать независимые
скроллбары для каждой оси.ScrollThumb автоматически синхронизируется с позицией
контента.ScrollArea оборачивает все элементы, гарантируя
корректное вычисление размеров и прокрутки.Стилизация Scroll Area выполняется через CSS или Tailwind классы:
.scrollbar-track {
background-color: rgba(0, 0, 0, 0.1);
border-radius: 4px;
}
.scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.4);
border-radius: 4px;
transition: background-color 0.2s;
}
.scrollbar-thumb:hover {
background-color: rgba(0, 0, 0, 0.6);
}
Советы по стилям:
scrollTo,
scrollBy).on:scroll и
on:scrollend позволяют отслеживать действия пользователя и
синхронизировать внешние компоненты (например, прогресс-бар).<ScrollArea bind:this={scrollArea}>
<ScrollViewport on:scroll={handleScroll}>
<div class="content">
<!-- длинный контент -->
</div>
</ScrollViewport>
</ScrollArea>
<script>
let scrollArea;
function handleScroll(event) {
console.log(event.target.scrollTop);
}
function scrollToBottom() {
scrollArea.scrollTo({ top: scrollArea.scrollHeight, beh * avior: 'smooth' });
}
</script>
overflow: hidden на родительских
контейнерах, чтобы избежать двойной прокрутки.transform: translateY для анимации.Scroll Area в SvelteKit UI предоставляет мощный, гибкий и эстетичный способ управления прокруткой. Правильная настройка viewport, scrollbars, corner и интеграция с событиями позволяет создавать интерфейсы с высокой отзывчивостью и современным визуальным стилем.