useScrollInfo
hookas/use-scroll-infoFreeHook
A hook to get the scroll info of an element
Install it
npx shadcn@latest add https://hookas.letstri.dev/r/use-scroll-info.jsonSource
1'use client'23import * as React from 'react'45export interface ScrollInfo {6 left: number7 top: number8 right: number9 bottom: number10}1112export function useScrollInfo(ref: React.RefObject<HTMLElement | null>) {13 const [scrollInfo, setScrollInfo] = React.useState<ScrollInfo>({14 left: 0,15 top: 0,16 right: 0,17 bottom: 0,18 })1920 const updateScrollInfo = React.useCallback(() => {21 const el = ref.current22 if (!el)23 return2425 const { scrollLeft, scrollTop, scrollWidth, scrollHeight, clientWidth, clientHeight } = el2627 setScrollInfo({28 left: scrollLeft,29 top: scrollTop,30 right: scrollWidth - (scrollLeft + clientWidth),31 bottom: scrollHeight - (scrollTop + clientHeight),32 })33 }, [ref])3435 React.useEffect(() => {36 const el = ref.current37 if (!el)38 return3940 updateScrollInfo()4142 el.addEventListener('scroll', updateScrollInfo)43 window.addEventListener('resize', updateScrollInfo)4445 return () => {46 el.removeEventListener('scroll', updateScrollInfo)47 window.removeEventListener('resize', updateScrollInfo)48 }49 }, [ref, updateScrollInfo])5051 return scrollInfo52}
Files it writes
More from hookas
All 30 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| useAsyncEffectuse-async-effect | hookas | Hooks | Free | no deps | |
| useClickOutsideuse-click-outside | hookas | Hooks | Free | no deps | |
| useDebounceCallbackuse-debounced-callback | hookas | Hooks | Free | no deps | |
| useDebounceMemouse-debounced-memo | hookas | Hooks | Free | no deps | |
| useDebounceStateuse-debounced-state | hookas | Hooks | Free | no deps | |
| useElementSizeuse-element-size | hookas | Hooks | Free | no deps | |
| useFullscreenuse-fullscreen | hookas | Hooks | Free | no deps | |
| useIntervaluse-interval | hookas | Hooks | Free | no deps |
