웹사이트에 플로팅 버튼 추가하기 - 스크롤 탑, 공유 기능 구현

웹사이트를 운영하다 보면 사용자 경험(UX)을 더욱 향상시키기 위해 다양한 작은 기능들이 필요해집니다. 특히 긴 콘텐츠를 포함한 웹사이트에서는 사용자가 원하는 정보를 보다 편리하게 탐색할 수 있도록 도와주는 기능이 필수적입니다. 예를 들어, 페이지를 스크롤한 후 빠르게 최상단으로 돌아갈 수 있는 버튼이나, 특정 콘텐츠를 간편하게 공유할 수 있는 기능이 있다면 사용자 편의성이 크게 증대됩니다. 이에 따라, 이 글에서는 웹사이트에 간단하면서도 효과적으로 적용할 수 있는 플로팅 버튼을 직접 구현하는 방법을 자세히 살펴보겠습니다.

updated: 웹페이지 환경에 따라 안되는 곳이 있어 다른 방식으로 업데이트 함(2025/02/09)

 

웹사이트에 플로팅 버튼 추가하기 - 스크롤 탑, 공유 기능 구현 관련 이미지

 

구현 기능 소개

  • 화면 우측 중앙에 고정된 플로팅 버튼
  • 페이지 최상단으로 부드럽게 스크롤하는 기능
  • 모바일에서는 네이티브 공유, PC에서는 URL 복사 기능
  • 부트스트랩 아이콘을 활용한 모던한 디자인

 

필요한 리소스

html

<!-- 부트스트랩 아이콘 CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">

 

HTML 구조

html

<!-- 플로팅 버튼 -->
    <div class="floating-buttons">
        <button class="floating-button scroll-top-button" onclick="scrollToTop()" aria-label="맨 위로 이동">
            <i class="bi bi-arrow-up"></i>
        </button>
        <button class="floating-button share-button" onclick="shareApp()" aria-label="공유하기">
            <i class="bi bi-share"></i>
        </button>
    </div>

 

CSS 스타일링

css

.floating-buttons {
   position: fixed;
   top: 50%;
   right: 20px;
   transform: translateY(-50%);
   display: flex;
   flex-direction: column;
   gap: 10px;
   z-index: 100;
}
.floating-button {
   width: 45px;
   height: 45px;
   border: none;
   border-radius: 50%;
   background-color: rgba(33, 37, 41, 0.8);
   color: white;
   display: flex;
   align-items: center;
   justify-content: center;
   cursor: pointer;
   transition: transform 0.3s ease;
}
.scroll-top-button {
   background-color: #4b5563;
}
.share-button {
   background-color: #6366f1;
}
.floating-button:hover {
   transform: translateX(-5px);
}
@media (max-width: 768px) {
   .floating-buttons {
       right: 10px;
   }
   .floating-button {
       width: 40px;
       height: 40px;
   }
}

 

JavaScript 기능 구현

script

<script>    
    // 스크롤 탑 기능
    function scrollToTop() {
        window.scrollTo({
            top: 0,
            behavior: 'smooth'
        });
    }
    // 공유 기능
    function shareApp() {
        if (navigator.share) {
            navigator.share({
                title: '로또당첨번호 조합기',
                text: '무료 로또 번호 생성기/추출기로 행운의 번호를 만들어보세요!',
                url: window.location.href
            }).catch(() => fallbackShare());
        } else {
            fallbackShare();
        }
    }
    // 공유 폴백 기능
    function fallbackShare() {
        navigator.clipboard.writeText(window.location.href)
            .then(() => alert('URL이 복사되었습니다!'))
            .catch(() => alert('URL 복사에 실패했습니다.'));
    }
    // 스크롤 이벤트 최적화
    const floatingButtons = document.querySelector('.floating-buttons');
    let lastScrollY = window.scrollY;
    let ticking = false;
    window.addEventListener('scroll', () => {
        if (!ticking) {
            window.requestAnimationFrame(() => {
                floatingButtons.style.display = window.scrollY > 200 ? 'flex' : 'none';
                ticking = false;
            });
            ticking = true;
        }
    });
    </script>

 

스크립트와 html 플로팅 버튼 코드를 body 바로 앞에 위치시키면 좋다고 합니다.

 

웹사이트에 플로팅 버튼 추가하기 - 스크롤 탑, 공유 기능 구현 관련 이미지

 

활용 방법

  • 필요한 리소스를 HTML <head> 태그에 추가
  • HTML 코드를 원하는 위치에 삽입
  • CSS 스타일을 스타일시트에 추가
  • JavaScript 코드를 스크립트 파일에 추가

 

커스터마이징 옵션

  • 버튼 위치: .floating-buttons의 right 값 조정
  • 버튼 크기: .floating-button의 width, height 값 조정
  • 버튼 색상: 각 버튼의 background 값 변경
  • 아이콘 변경: 부트스트랩 아이콘 클래스 변경

 

마무리

이 플로팅 버튼 구현 방식은 비교적 간단하면서도 사용자 경험(UX)을 효과적으로 향상시킬 수 있는 방법입니다. 모바일과 PC 환경을 모두 고려한 반응형 디자인을 적용하면 다양한 디바이스에서 일관된 사용자 경험을 제공할 수 있으며, 직관적인 UI 덕분에 누구나 쉽게 사용할 수 있습니다. 특히 블로그, 포트폴리오, 쇼핑몰과 같이 긴 스크롤이 필요한 웹사이트에서는 더욱 유용하게 활용될 수 있으며, 사용자가 원하는 정보를 빠르게 탐색할 수 있도록 도와줍니다. 이러한 기능을 웹사이트에 추가하면 편의성이 높아지고, 사용자 만족도 또한 크게 향상될 것입니다.

 

함께보면 좋은 글