React - 스크롤 퍼센트 구하기

Moolbum·2022년 6월 28일
6

React

목록 보기
15/23
post-thumbnail

스크롤 퍼센트 구하기

이전 글에는 요소의 절대위치를 구하는 글을 적었습니다.
이번에는 현재 내가 얼마나 스크롤을 했는지 퍼센트를 구하는 방법입니다!

( 스크롤 된 높이+ 보고있는화면(viewport)높이 ) / 전체문서높이 * 100


활용하기

  • Element.scrollTop : 요소의 콘텐츠가 세로로 스크롤되는 픽셀수
  • Element.scrollHeight : 요소의 콘텐츠의 총 높이
  • Element.clientHeight : 요소의 내부높이

스크롤 시 몇 퍼센트 했는지 알 수 있는 로직입니다.

const [percentage, setPercentage] = useState();

const getScrollPercentage = () => {
    const scroll = document.documentElement.scrollTop;
    const scrollHeight = document.documentElement.scrollHeight;
    const clientHeight = document.documentElement.clientHeight;

    const viewport = scrollHeight - clientHeight;
    const percentage = (scroll / viewport) * 100;
  
    return setPercentage(Math.floor(percentage));
  };

  useEffect(() => {
    window.addEventListener('scroll', getScrollPercentage);

    return () => window.removeEventListener('scroll', getScrollPercentage);
  }, []);
profile
Front-End Developer 👨‍💻

2개의 댓글

comment-user-thumbnail
2024년 7월 29일

Element.scrollTop 속성을 한참 찾아다니다가 여기서 찾았네요ㅠㅠㅠ 감사합니다!!!

1개의 답글