Next.js 블로그 TOC 배너 만들기

2022.11.19
2분

  1. 배너 위치 산정하기
    • absolute로 위치를 잡아주고 fixed로 스크롤에 고정되도록 한다.
  2. Content에서 Toc 추출하기
  3. slug 만들기
  4. 마크업 구성하기
    • <a href="#..."/>를 활용해서 링크를 연동한다.
    • slug # 개수에 따라 깊이를 부여하고 tailwind docs처럼 스타일를 부여해보자.
  5. 스타일 조정하기
    • scroll-margin-top을 element margin-top에 맞추면 보기 좋게
  6. 스크롤에 따라 현재 headings에 하이라이트한다.

배너 만드는 방법

  1. absolute속성에 left-full로 레이아웃 잡기
<div className="absolute left-full">
  <div className="fixed top-12 bottom-0 ml-8 h-full w-80 overflow-y-auto p-8">
    <TocBanner tableOfContents={tableOfContents} />
    <div className="">
      <ThemeSwitch />
    </div>
  </div>
</div>
  1. right 속성으로 동적으로 레이아웃 잡기
<div className="fixed top-[3.8125rem] bottom-0 right-[max(0px,calc(50%-45rem))] z-20 hidden w-[19.5rem] overflow-y-auto py-10 xl:block">
  <div className="">
    <TocBanner tableOfContents={tableOfContents} />
    <div className="">
      <ThemeSwitch />
    </div>
  </div>
</div>