스크롤하여 나타나고 사라지는 헤더 만들기

헤더는 CSS와 몇 가지 JavaScript로 쉽게 애니메이션화할 수 있지만 속도는 일정합니다. 그게 싫어서 이렇게 자연스럽게 작동하는 헤더를 만들겠습니다.



샘플 코드 및 데모





이 스크립트는 스크롤하여 top의 값을 변경합니다.

const header = document.querySelector("header"),
  headerStyle = window.getComputedStyle(header),
  headerHeight = parseFloat(headerStyle.height);

let lastPosition = 0;

document.addEventListener("scroll", () => {
  const currentPosition = window.scrollY,
    diff = currentPosition - lastPosition;

  let newTop = parseFloat(headerStyle.top) - diff;
  if (diff < 0) {
    newTop = Math.min(newTop, 0);
  } else {
    newTop = Math.max(newTop, 0 - headerHeight);
  }

  header.style.top = `${newTop}px`;
  lastPosition = currentPosition;
});


머리글에 그림자가 있는 경우 이를 계산해야 합니다.

newTop = Math.max(newTop, 0 - headerHeight - shadowHeight)

좋은 웹페이지 즐겨찾기