back to top buttonscroll to top buttontop button cssReact scroll to topScroll top

'Back to Top' 버튼 구현하기, 사용자 경험을 극대화하는 간단한 방법

KUKJIN LEE
KUKJIN LEE
2024년 5월 27일
247

웹 페이지가 길어질수록 사용자가 스크롤을 많이 해야 하는 경우가 생깁니다. 이때, 페이지의 맨 위로 쉽게 이동할 수 있는 "Back to Top" 버튼을 제공하면 사용자 경험을 크게 향상시킬 수 있습니다.

 

"Back to Top" 버튼의 필요성

  • 편리함: 사용자들이 긴 페이지를 탐색할 때 쉽게 맨 위로 돌아갈 수 있습니다.

  • 접근성 향상: 모든 사용자가 페이지를 쉽게 탐색할 수 있도록 도와줍니다.

  • 사용자 경험 향상: 웹사이트의 직관성과 사용성을 높여줍니다.

 

  1. Layout 컴포넌트:
    먼저, app/layout.js 파일을 생성하고 "Back to Top" 버튼을 구현합니다. 모든 페이지에서 공통으로 사용됩니다.

    • useEffect를 사용하여 스크롤 이벤트를 감지하고, 스크롤 위치가 300px 이상일 때 버튼을 보이도록 설정합니다.

    • 버튼을 클릭하면 scrollToTop 함수가 실행되어 페이지 맨 위로 부드럽게 스크롤합니다.

 

import { useEffect, useState } from 'react';
import './globals.css';
export default function Layout({ children }) {
  const [showButton, setShowButton] = useState(false);
  useEffect(() => {
    const handleScroll = () => {
      if (window.scrollY > 300) {
        setShowButton(true);
      } else {
        setShowButton(false);
      }
    };
    window.addEventListener('scroll', handleScroll);
    return () => {
      window.removeEventListener('scroll', handleScroll);
    };
  }, []);
  const scrollToTop = () => {
    window.scrollTo({
      top: 0,
      behavior: 'smooth'
    });
  };
  return (
    <div className="relative min-h-screen">
      {children}
      {showButton && (
        <button
          className="fixed bottom-8 right-8 p-2 bg-blue-600 text-white rounded-full shadow-lg hover:bg-blue-700"
          onClick={scrollToTop}
        >
          Top
        </button>
      )}
    </div>
  );
}

 

"Back to Top" 버튼은 간단하지만 매우 효과적인 사용자 경험 향상 방법입니다. 이 버튼을 구현함으로써 사용자들이 긴 페이지를 탐색할 때 불편함을 최소화하고, 웹사이트의 접근성을 높일 수 있습니다.

관련 글

TypeScript any 린트 에러(no-explicit-any) 근본적으로 해결하기

TypeScript 프로젝트에서 @typescript-eslint/no-explicit-any 린트 에러는 단순 규칙 비활성화로 해결할 문제가 아닙니다. 눈 앞 문제는 해결할 수 있지만, TypeScript를 사용하는 가장 중요한 이유를 위배하게 됩니다. any 타입은...

2025년 7월 23일269

JSP 주석, 아직도 `` 쓰시나요? 올바른 사용법

코드를 작성하다 보면 주석을 남기는 경우가 많습니다. 하지만 JSP 환경에서 어떤 주석을 사용하냐에 따라 보안 수준과 성능 이 크게 달라집니다. 표준 주석: 서버 사이드 주석 &lt;%-- --%&gt; JSP 페이지 내 개발 관련 주석은 &lt;%-- --%&gt; 를 사용하는게 좋습니다...

2025년 7월 9일144

쉽게 만드는 React Tab 라이브러리 react-tabs

개발자가 커스텀 스타일을 쉽게 적용할 수 있도록 최소한의 스타일만 제공하여 유연한 스타일링 이 가능한 라이브러리입니다. 상태 관리가 내장되어 있어 탭 선택 및 패널 표시 로직을 직접 구현할 필요 없이 간편하게 사용할 수 있습니다. 기본 사용법 먼저, 라이브러리를 설치합...

2025년 6월 17일173

Next.js 환경 변수 NEXT_PUBLIC 접두사 역할

NEXT_PUBLIC 접두사를 붙이면 변수의 접근 범위가 완전히 달라집니다. 이 차이점을 이해하는 것이 안전하고 효율적인 Next.js 애플리케이션을 구축하는 데 중요합니다. NEXT_PUBLIC 접두사가 없는 환경 변수 (서버 전용) NEXT_PUBLIC 접두사 없이...

2025년 6월 13일156