コンポーネント

スクロール領域

カスタムのクロスブラウザースタイリングのために、ネイティブのスクロール機能を拡張します。

import React from 'react';
import * as ScrollArea from '@radix-ui/react-scroll-area';
import './styles.css';
const TAGS = Array.from({ length: 50 }).map((_, i, a) => `v1.2.0-beta.${a.length - i}`);
const ScrollAreaDemo = () => (
<ScrollArea.Root className="ScrollAreaRoot">
<ScrollArea.Viewport className="ScrollAreaViewport">
<div style={{ padding: '15px 20px' }}>
<div className="Text">Tags</div>
{TAGS.map((tag) => (
<div className="Tag" key={tag}>
{tag}
</div>
))}
</div>
</ScrollArea.Viewport>
<ScrollArea.Scrollbar className="ScrollAreaScrollbar" orientation="vertical">
<ScrollArea.Thumb className="ScrollAreaThumb" />
</ScrollArea.Scrollbar>
<ScrollArea.Scrollbar className="ScrollAreaScrollbar" orientation="horizontal">
<ScrollArea.Thumb className="ScrollAreaThumb" />
</ScrollArea.Scrollbar>
<ScrollArea.Corner className="ScrollAreaCorner" />
</ScrollArea.Root>
);
export default ScrollAreaDemo;

特徴

    スクロールバーはスクロール可能なコンテンツの上に配置され、スペースを取りません。

    スクロールはネイティブです。CSSトランスフォーメーションによる基盤となる位置移動はありません。

    コントロールを操作するときのみポインターの動作をシムするため、キーボードコントロールは影響を受けません。

    右から左への方向をサポートします。

インストール

コマンドラインからコンポーネントをインストールします。

npm install @radix-ui/react-scroll-area

構造

すべてのパーツをインポートして組み合わせます。

import * as ScrollArea from '@radix-ui/react-scroll-area';
export default () => (
<ScrollArea.Root>
<ScrollArea.Viewport />
<ScrollArea.Scrollbar orientation="horizontal">
<ScrollArea.Thumb />
</ScrollArea.Scrollbar>
<ScrollArea.Scrollbar orientation="vertical">
<ScrollArea.Thumb />
</ScrollArea.Scrollbar>
<ScrollArea.Corner />
</ScrollArea.Root>
);

APIリファレンス

ルート

スクロール領域のすべてのパーツが含まれています。

プロパティデフォルト
asChild
boolean
false
type
enum
"hover"
scrollHideDelay
数値
600
方向
enum
デフォルト値なし
nonce
文字列
デフォルト値なし

ビューポート

スクロール領域のビューポート領域。

プロパティデフォルト
asChild
boolean
false

スクロールバー

垂直スクロールバー。水平スクロールを有効にするには、orientation プロパティを持つ2つ目のScrollbarを追加します。

プロパティデフォルト
asChild
boolean
false
強制マウント
boolean
デフォルト値なし
向き
enum
垂直
データ属性
[data-state]"visible" |"hidden"
[data-orientation]"vertical" |"horizontal"

つまみ

ScrollArea.Scrollbarで使用するつまみ。

プロパティデフォルト
asChild
boolean
false
データ属性
[data-state]"visible" |"hidden"

コーナー

垂直および水平スクロールバーの両方が交わるコーナー。

プロパティデフォルト
asChild
boolean
false

アクセシビリティ

ほとんどの場合、ネイティブスクロールに頼り、CSSで利用可能なカスタマイズオプションを使用するのが最適です。それが十分でない場合、ScrollAreaは、ブラウザのネイティブスクロール動作(およびキーボードスクロールなどのアクセシビリティ機能)を維持しながら、追加のカスタマイズ性を提供します。

キーボード操作

このコンポーネントはネイティブスクロールに依存しているため、キーボードによるスクロールはデフォルトでサポートされています。特定のキーボード操作はプラットフォームによって異なる可能性があるため、ここでは指定せず、キーイベントを介したスクロールを処理するための特定のイベントリスナーを追加しません。