728x90
스크롤을 맨 위로 올리는 top 버튼을 만들어보자!
생각보다 코드가 매우 간단하다.
만들 예제의 완성본
1. 리스트 페이지를 만든다.
List.jsx
import "./List.css";
const List = () => {
const dummyList = [
{
id: 1,
title: "1번",
},
{
id: 2,
title: "2번",
},
{
id: 3,
title: "3번",
},
{
id: 4,
title: "4번",
},
{
id: 5,
title: "5번",
},
{
id: 6,
title: "6번",
},
{
id: 7,
title: "7번",
},
{
id: 8,
title: "8번",
},
{
id: 9,
title: "9번",
},
{
id: 10,
title: "10번",
},
];
return (
<div>
<h1>List</h1>
<div className="list-container">
{dummyList.map((it) => (
<div key={it.id}>
<div className="list-box">{it.title}</div>
</div>
))}
</div>
</div>
);
};
export default List;
2. 스크롤 Top 컴포넌트를 만든다.
ScrollToTop.jsx
import "./ScrollToTop.css";
import TopButtonImg from "../../assets/top-button.png";
export function ScrollToTop() {
// 클릭하면 스크롤이 위로 올라가는 함수
const handleTop = () => {
window.scrollTo({
top: 0,
behavior: "smooth",
});
};
return (
<>
<div className="top-btn-container">
<button
className="top-btn"
onClick={handleTop} // 버튼 클릭시 함수 호출
>
<img
src={TopButtonImg}
alt="탑버튼 아이콘"
style={{ width: "80px", height: "80px" }}
/>
</button>
</div>
</>
);
}
3. 스크롤 Top 컴포넌트를 스타일링 한다.
ScrollToTop.css
.top-btn-container {
position: fixed;
width: 100%;
bottom: 13%;
right: 2%;
z-index: 1000;
}
.top-btn{
position: absolute;
border: 0;
background:transparent;
position: absolute;
top: 0;
right: 0;
cursor: pointer;
}
.top-btn:focus{
border: none;
outline:none;
}
완성본
728x90
'Libraries > React' 카테고리의 다른 글
[React] 리액트로 라디오 버튼(Radio button) 만들기 (신고 모달창 만들기) (2) | 2024.10.02 |
---|---|
[React] 리액트로 서버에 데이터 요청하는 방법 (fetch, axios.then, async/await 사용하기) (0) | 2024.08.30 |
[React] 작성 날짜 기준으로 지난 시간을 변환하기 (리뷰시간, 게시글 시간, 댓글시간, 방금전, 몇분전, 몇시간전, 며칠전) (2) | 2024.01.06 |
[React] 중복된 useState 상태 및 함수 코드 정리하기, 컴포넌트 분리하기 (0) | 2024.01.04 |
[React] Routing (5) 데이터에서 route 설정하기 (0) | 2024.01.03 |