티스토리 블로그 글을 작성할때 자동 목차(TOC)를 추가하는 예제입니다.
❗️ 이글은 티스토리 북클럽스킨을 대상으로 만든 예제입니다.
1. HTML 수정
티스토리 관리페이지 → 꾸미기 → 스킨편집 → HTML 편집 → HTML
HTML에서 </head> 앞에 아래코드를 추가합니다.
<!-- TOC Start --> <script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.11.1/tocbot.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.11.1/tocbot.css"> <!-- TOC End --> </head>
HTML에서 </body> 앞에 아래코드를 추가합니다.
<!-- TOC Script Start--> <script type="text/javascript"> $(document).ready(function () { if (!location.pathname.startsWith("/entry/")) { return } var content = document.querySelector(".entry-content"); var headings = [...content.querySelectorAll("h1, h2, h3, h4, h5, h6, h7")].filter(e => !e.parentElement.classList.contains('another_category')); if (headings.length <= 1) { return } let tocHead = document.createElement('div'); tocHead.className = 'toc-head'; content.prepend(tocHead); var headingMap = {}; headings.forEach(function (heading) { var id = heading.id ? heading.id : heading.textContent .trim() .toLowerCase() .split(" ") .join("-") .replace(/[\!\@\#\$\%\^\&\*\(\):]/gi, ""); headingMap[id] = !isNaN(headingMap[id]) ? ++headingMap[id] : 0; if (headingMap[id]) { heading.id = id + "-" + headingMap[id]; } else { heading.id = id; } }); tocbot.init({ tocSelector: ".toc-head", contentSelector: ".entry-content", headingSelector: "h1, h2, h3", hasInnerContainers: false, activeLinkClass: 'toc-head-active-link', disableTocScrollSync: false, collapseDepth: 3, ignoreSelector: '.another_category h4', }); }); </script> <!-- TOC Script End--> </body>
2. CSS 수정
티스토리 관리페이지 → 꾸미기 → 스킨편집 → HTML 편집 → CSS
CSS 에서 아래코드를 추가합니다.
/* TOC */ .toc-absolute { position: absolute; margin-top: 10px; } .toc-fixed { position: fixed; top: 30px; } .toc-none { display: none; } .toc { right: calc((100% - 915px) / 2 - 170px); width: 330px; padding: 10px; box-sizing: border-box; } .entry-content .toc-head { background-color: #fafafa; opacity: 0.8; } .toc-head { font-size: 1em; font-weight: 500; margin-bottom: 40px; padding-bottom: 10px; padding-top: 10px; border: 1px solid #999; } .toc-head:before { content: "목 차"; display: block; text-align: center; padding: 4px 0 10px; margin: 0px auto 0; } .is-active-link::before { background-color: #0000ff !important; } .toc-head > ol { list-style: none; } .toc-head > ol > li > ol { list-style: none; margin: 10px 0; } .toc-head ol > li { margin: 10px 0; text-indent: 0px; } .toc-head > ol > li { color: black; } .toc-head a:before { background-color: #fff0; } .toc-head-active-link { font-weight: 500; } .toc-list > li { margin-top: 10px !important; font-size: 0.9em; } .toc > .toc-list li { margin-bottom: 10px; } .toc > .toc-list li:last-child { margin-bottom: 0; } .toc > .toc-list li a { text-decoration: none; } .toc-title { font-weight: 500; font-size: 1.2em; color: dimgray; padding: 10px; background-color: #f1f1f1; text-align: center; } @media screen and (max-width: 950px) { .toc { display: none; } }
3. 마무리
블로그 글을 작성하면 아래와 같이 자동으로 목차를 생성해줍니다.
댓글