Sandcorp샌드코프 · 웹·AI 제품 개발

새 프로젝트 받는 중 · 갱신 2026.11sandcorp.co.krGitHub

← 팁

프론트·UI

sticky·fixed 위치는 헤더의 실제 높이를 CSS 변수로 받아 쓴다

top: 64px처럼 숫자를 박으면 모바일에서 헤더가 높아질 때 아래 툴바가 헤더 뒤로 숨는다. 헤더가 제 높이를 재서 CSS 변수로 알린다.

데스크톱에서 잘 붙어 있던 sticky 툴바가 모바일에서는 헤더 뒤로 반쯤 숨는다. 앵커 링크로 이동하면 제목이 헤더에 가려진다.

원인은 top: 64px처럼 헤더 높이를 숫자로 박은 것이다. 모바일에서는 메뉴가 두 줄로 접히거나 글자가 커져 헤더가 높아지는데, 아래 요소들은 여전히 64px만 비켜 선다.

헤더가 제 높이를 직접 재서 CSS 변수로 알리고, 아래 요소들은 그 변수를 쓴다. ResizeObserver를 쓰면 화면 회전이나 글자 크기 변경에도 따라간다.

const header = document.querySelector<HTMLElement>('.site-header')!;

new ResizeObserver(([entry]) => {
  const h = entry.borderBoxSize[0].blockSize;
  document.documentElement.style.setProperty('--header-h', `${h}px`);
}).observe(header);
:root {
  --header-h: 64px; /* 스크립트가 돌기 전 기본값 */
}
.toolbar {
  position: sticky;
  top: var(--header-h);
}
h2[id] {
  scroll-margin-top: var(--header-h); /* 앵커 이동 때 가리지 않게 */
}

문의 →