カスタムのクロスブラウザースタイリングのために、ネイティブのスクロール機能を拡張します。
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トランスフォーメーションによる基盤となる位置移動はありません。
コントロールを操作するときのみポインターの動作をシムするため、キーボードコントロールは影響を受けません。
右から左への方向をサポートします。
コマンドラインからコンポーネントをインストールします。
すべてのパーツをインポートして組み合わせます。
スクロール領域のすべてのパーツが含まれています。
スクロール領域のビューポート領域。
垂直スクロールバー。水平スクロールを有効にするには、orientation
プロパティを持つ2つ目のScrollbar
を追加します。
ScrollArea.Scrollbar
で使用するつまみ。
垂直および水平スクロールバーの両方が交わるコーナー。
ほとんどの場合、ネイティブスクロールに頼り、CSSで利用可能なカスタマイズオプションを使用するのが最適です。それが十分でない場合、ScrollArea
は、ブラウザのネイティブスクロール動作(およびキーボードスクロールなどのアクセシビリティ機能)を維持しながら、追加のカスタマイズ性を提供します。
このコンポーネントはネイティブスクロールに依存しているため、キーボードによるスクロールはデフォルトでサポートされています。特定のキーボード操作はプラットフォームによって異なる可能性があるため、ここでは指定せず、キーイベントを介したスクロールを処理するための特定のイベントリスナーを追加しません。