スクロール領域ScrollAreaExperimental

表示領域を意図的に制限し、縦横スクロールを一貫したスタイルで扱います。

プレビュー

状態とバリエーション

リスト

高さが決まったパネル内に長いリストを収めます。

リリース
v2.6.18
v2.5.17
v2.5.16
v2.5.15
v2.4.14
v2.4.13
v2.4.12
v2.3.11
v2.3.10
v2.3.9
v2.2.8
v2.2.7
v2.2.6
v2.1.5
v2.1.4
v2.1.3
v2.0.2
v2.0.1

本文

補足文や説明文をパネル内でスクロールさせます。

スクロールする補足

表示領域を意図的に制限する時に ScrollArea を使います。

重要な操作を見えない位置に隠さず、スクロールが必要な領域だと分かるようにします。

長い補足文は、ページ全体を押し広げずにパネル内へ収められます。

このパターンは、補助情報、プレビュー、詳細説明などの二次的な内容に使います。

主要な操作が含まれる場合は、操作そのものをスクロール領域の外に置きます。

横スクロール

幅の広い項目列を、横方向のスクロールとして扱います。

ダッシュボード
分析
書き出し
メンバー
設定
請求

縦横スクロール

横幅も高さも制限した表やワークスペースを、縦横両方にスクロールできます。

プロジェクト担当状態更新日予算リスク
モバイル刷新デザイン確認中2026-06-0118,200円
検索インデックス基盤構築中2026-06-0242,000円
請求書き出し経理停止中2026-06-039,800円
メディアライブラリプロダクト準備完了2026-06-0325,600円
監査クローラードキュメント計画中2026-06-0414,400円
書き出しワーカー運用実行中2026-06-0432,100円
アクセス確認セキュリティ確認中2026-06-0511,900円
利用状況ダッシュボード分析待機中2026-06-0527,300円

常時表示

スクロール可能であることを常に示したい場合に使います。

常時表示の行 1

常時表示の行 2

常時表示の行 3

常時表示の行 4

常時表示の行 5

常時表示の行 6

常時表示の行 7

常時表示の行 8

常時表示の行 9

常時表示の行 10

常時表示の行 11

常時表示の行 12

プロパティ

表は横にスクロールできます
プロパティ初期値説明
type"auto" | "always" | "scroll" | "hover""hover"スクロールバーの表示タイミングです。
scrollHideDelaynumber600スクロールバーが隠れるまでの遅延です。
scrollbarOrientation"vertical" | "horizontal" | "both""vertical"自動描画するスクロールバーの向きです。
viewportClassNamestring-viewport に追加する className です。
scrollbarClassNamestring-スクロールバーに追加する className です。
thumbClassNamestring-つまみに追加する className です。

使い方

import { ScrollArea, Separator } from "@gunjo/ui";

const releases = Array.from(
  { length: 18 },
  (_, index) => "v2." + Math.floor((18 - index) / 3) + "." + (18 - index),
);

export function ReleaseList() {
  return (
    <ScrollArea className="h-56 w-full max-w-sm rounded-md border bg-background p-4">
      <div className="mb-3 text-sm font-medium">リリース</div>
      {releases.map((release) => (
        <div key={release}>
          <div className="text-sm">{release}</div>
          <Separator className="my-2" />
        </div>
      ))}
    </ScrollArea>
  );
}

設計の判断

  • 中身が縮められるように、土台の表組み表示を打ち消した。Radix の Viewport は、中の入れ物を表(table)として表示します。この形だと横幅が中身の最大幅で決まり、折り返せない長い1行があるだけで親からはみ出します。GUNJO は中の入れ物に blockmin-w-0w-full を上書きして、縮められる箱にしました。
  • 横のつまみは、頼まれたときだけ作る。scrollbarOrientation の既定は縦だけです。資料は「常時表示ではなく、溢れたときだけ出す指定を基本にする」と書いていますが、GUNJO ではもう一段強く、横向きのつまみは horizontalboth を渡したときにしか作りません。使わない軸のつまみが場所を取らないためです。
  • 「右にまだ続く」ことを示す表現は入れていません。資料は、横スクロールは縦と違って気づかれにくいので、右端にぼかしや影を置いて続きがあると示すことを挙げています。GUNJO の ScrollArea にその表現はなく、scrollbarClassNamethumbClassName でつまみを目立たせるところまでです。ぼかしが要る画面は、いまは呼ぶ側で重ねます。

使用コンポーネント

いつ・なぜ使うか(UIXHERO)

「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。