-
페이지의 특정 부분으로 스크롤하는 방법프론트엔드 개발자가 될거야./react 2023. 8. 7. 17:07
구현 중에 버튼을 누르면 해당부분으로 자동으로 스크롤하게 하는 기능을 구현하게 되었다.
스크롤하게 하는 기능은 같은 페이지 내에서도 가능하고
다른 페이지로 이동한 후 해당 부분으로 스크롤하게 할 수 있다.페이지 내에서 특정 부분으로 스크롤해주는 것은 사소한 부분일지라도
유저에게는 매우 편리한 기능이기에 알아두면 좋을 거 같다.case 1. 같은 페이지일 때 해당 부분으로 스크롤하기
같은 페이지 내에서 해당 부분으로 스크롤하는 방법은 간단하다.
<div> <button href="#a">a부분으로 스크롤</button> <div id="a">a부분</div> </div>
이 예시에서는 'a부분으로 스크롤' 버튼을 누르면 해당 부분으로 스크롤된다.
이는 간단한 해시 값을 활용한 스크롤 이동이다.
case 2. 다른 페이지로 이동해서 해당 부분으로 스크롤하기
다른 페이지로 이동한 후 해당 부분으로 스크롤하는 방법이다.
- Home 페이지
Home 페이지에서 'detail 페이지로 이동 후 a 부분으로 스크롤' 링크를 제공해주자.
<link to="/home/detail/#a">detail페이지로 이동 후 a부분으로 스크롤</link>
- Detail 페이지
Detail 페이지에서useEffect 훅을 활용하여
URL의 해시 값이 변경될 때 해당 부분으로 스크롤하는 기능을 구현하자.import React, { useEffect } from 'react'; function DetailPage() { useEffect(() => { const handleHashScroll = () => { const { hash } = window.location; if (hash) { const element = document.querySelector(hash); if (element) { element.scrollIntoView({ behavior: "smooth" }); } } }; handleHashScroll(); window.addEventListener("hashchange", handleHashScroll); return () => { window.removeEventListener("hashchange", handleHashScroll); }; }, []); return ( <div> {/* ... (다른 컴포넌트 및 내용) */} <div id="a">a부분</div> </div> ); } export default DetailPage;
페이지가 로드되거나 URL의 해시 값이 변경될 때 handleHashScroll 함수를 실행하여 원하는 부분으로 스크롤한다.
다른 페이지로 이동하더라도 원하는 부분으로 자동으로 스크롤된다 : )'프론트엔드 개발자가 될거야. > react' 카테고리의 다른 글
Fontsource로 폰트 적용하기 (0) 2023.08.08 [리액트 공식문서 정독하기] 리액트 주요개념 - 1 (JSX, DOM에 React 엘리먼트를 렌더링하는 방법, Components와 Props) (0) 2023.08.08 stacked card slider 구현하기(react, styled-component) (0) 2023.05.11 [이미지 업로드, 이미지 프리뷰] FileReader객체란? reader.onload 함수란? (feat. chatGPT 너 진짜 똑똑하다..) (2) 2023.02.16 [react] react-router-dom Outlet으로 Tab메뉴 구현하기 (0) 2023.02.08