고정 내비게이션 바를 만드는 방법

이 기사에서는 웹 사이트에 대한 고정 탐색 모음을 만드는 방법을 보여줍니다.

데모 및 소스 코드





HTML




<div class="header">
    <h2>Header</h2>
    <p>Please Scroll down to see the sticky effect.</p>
</div>

<div id="navbar">
    <a class="active" href="#">Home</a>
    <a href="#">News</a>
    <a href="#">Blog</a>
    <a href="#">Videos</a>
    <a href="#">Contact</a>
</div>

<div class="content">
    <p>The navbar will stick to the top when you reach its scroll position.</p>
    <p>
        Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum
        definitiones no quo, maluisset concludaturque et eum, altera fabulas ut
        quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert
        laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no
        molestiae voluptatibus.
    </p>

    <!-- more dummy text for have scrolling -->
</div>


CSS




* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

body {
    margin: 0;
    font-size: 28px;
    font-family: Arial, Helvetica, sans-serif;
}

.header {
    background-color: #f1f1f1;
    padding: 30px;
    text-align: center;
}

#navbar {
    background-color: #333;
    display: flex;
}

#navbar a {
    display: block;
    flex-basis: 20%;
    color: #f2f2f2;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    font-size: 17px;
}

#navbar a:hover {
    background-color: #ddd;
    color: black;
}

#navbar a.active {
    background-color: red;
    color: white;
}

.content {
    padding: 16px;
}

.sticky {
    position: fixed;
    top: 0;
    width: 100%;
}

.sticky + .content {
    padding-top: 60px;
}


설명:
  • 이 페이지에서는 position: sticky를 사용하지 않을 것입니다.
  • 몇 가지 기본 스타일이 있습니다. 설명할 필요가 없습니다. 하지만
  • 어떤 요소에도 연결되지 않은 클래스 스타일이 있습니다sticky. sticky 클래스는 요소를 페이지 상단에 고정시킵니다.
  • 탐색 모음이 페이지 상단에 도달하면 sticky 클래스를 추가하고 페이지 상단에 고정합니다.
  • 그런 다음 콘텐츠를 60px 아래로 밀어 넣습니다. 갑작스러운 빠른 이동을 방지하기 위해(탐색 모음이 페이지 상단에서 새 위치를 차지함)

  • 자바스크립트 코드




    const navbar = document.getElementById('navbar')
    const navbarPos = navbar.offsetTop
    
    const handleScroll = () => {
        const STICKY = 'sticky'
    
        if (window.pageYOffset >= navbarPos) {
            navbar.classList.add(STICKY)
            return true
        }
    
        navbar.classList.remove(STICKY)
    }
    
    window.onscroll = function () {
        handleScroll()
    }
    


    설명:
  • onscroll 이벤트를 사용하여 페이지의 스크롤 위치를 확인하고 있습니다.
  • navbarPos는 탐색 모음의 위치입니다.
  • 페이지의 스크롤 위치가 탐색 모음의 위치보다 크거나 같으면 탐색 모음이 페이지 상단에 도달했음을 의미합니다.
  • 그런 다음 탐색 모음에 sticky 클래스를 추가합니다.
  • 그렇지 않으면 탐색 모음에서 sticky 클래스를 제거합니다.

  • 그리고 그게 다야. 최종 결과:

    좋은 웹페이지 즐겨찾기