k8ordo
  • UI
  • Form
  • State
  • Router
  • Static
  • Server
ダークモードに切り替え
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AI
ナビゲーションを開く
DOM操作
  • useClickAway
  • useHover
  • useResize
  • useScrollDirection
  • useScrollLock
  • useWindowResize
  • useWritingMode
状態・ストレージ
  • useClipboard
  • useControllableState
タイミング
  • useDebouncedTransition
  • useDeferredDebounce
  • useInterval
  • useTimeout
ユーティリティ
  • useBreakpoint
  • useClient
  • useDisclosure
  • useStep
  • useWindowSize
オブザーバー
  • useIntersectionObserver
  • useInView
k8ordo

Baselineに入った機能を、制限なく使うReactのライブラリ群。

パッケージ
  • @k8ordo/ui
  • @k8ordo/form
  • @k8ordo/state
  • @k8ordo/router
  • @k8ordo/static
  • @k8ordo/server
UI
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AIチャット
  • Generative UI
  • AIエージェント
  • Storybook
リソース
  • GitHub
  • npm

© 2026 k8o — MIT License

組版 — Noto Sans JP / M PLUS 2

Hooks

DOM操作
  • useClickAway
  • useHover
  • useResize
  • useScrollDirection
  • useScrollLock
  • useWindowResize
  • useWritingMode
状態・ストレージ
  • useClipboard
  • useControllableState
タイミング
  • useDebouncedTransition
  • useDeferredDebounce
  • useInterval
  • useTimeout
ユーティリティ
  • useBreakpoint
  • useClient
  • useDisclosure
  • useStep
  • useWindowSize
オブザーバー
  • useIntersectionObserver
  • useInView

useScrollDirection

現在のスクロール方向を検出するフック

インポート

使い方

基本的な使い方

このページのbodyはスクロールしないため、ここでは動作を試せません。実際のスクロール可能なページでご確認ください。

縦書きプレビューに切り替え

要素を指定する

縦書きプレビューに切り替え

パラメーター

options.threshold
Type: number
Default: 50
options.target
Type: RefObject<HTMLElement | null>
Default: window
PropTypeDefault
options.thresholdnumber50
options.targetRefObject<HTMLElement | null>window

戻り値

x
Type: 'left'|'right'
Default: -
y
Type: 'up'|'down'
Default: -
PropTypeDefault
x'left'|'right'-
y'up'|'down'-
Vertical: upHorizontal: right
Vertical: up
Scroll this area to see its scroll direction being detected.
import { useScrollDirection } from '@k8ordo/ui';
const { x, y } = useScrollDirection();

return (
  <div>
    <span>Vertical: {y}</span>
    <span>Horizontal: {x}</span>
  </div>
);
const scrollRef = useRef<HTMLDivElement>(null);
const { y } = useScrollDirection({ target: scrollRef, threshold: 20 });

return (
  <div ref={scrollRef} style={{ overflow: 'auto', height: 128 }}>
    {/* scrollable content */}
  </div>
);