728x90
[편집 전 필독]
[Tistory] 티스토리 스킨 편집의 기초 - HTML, CSS, JavaScript
[개요] 티스토리 블로그는 개인 및 기업의 다양한 콘텐츠를 공유하는 데 매우 유용한 플랫폼이다. 블로그의 시각적인 요소는 방문자들에게 강력한 인상을 남기며, 스킨 편집은 그 중에서도 중요
rangvest.tistory.com
[언어명 표시 및 접기 버튼 추가]
1. HTML 코드 수정
html
접기<!--Code Block Hader(언어명) 적용 시작--> <!-- 코드 블럭 언어표시 스크립트 --> <script> // pre 요소 중 data-ke-type 속성이 'codeblock'인 각각의 요소에 대해 작업 $("pre[data-ke-type='codeblock']").each(function() { var showTxt = "펼치기", hideTxt = "접기"; // 버튼 텍스트 지정 var pre = this; // 현재 pre 요소 저장 var code = this.dataset.keLanguage; // 코드 언어 가져오기 var $labelDiv = $("<div>"); // 레이블을 담는 div 요소 생성 var $labelBtn = $("<span>"); // 버튼을 담는 span 요소 생성 var $wrapBtn = $("<label><input type='checkbox'>"); // 래핑을 위한 label과 input 생성 var $code = $(this).find("code").first(); // pre 내의 첫 번째 code 요소 선택 var codeHtml = $code.html(); // code 요소의 내용 가져오기 // 코드 내에 '<hide/>\n' 문자열이 있는지 또는 data-hide 속성이 있는지 검사 if (codeHtml.search('<hide/>\n') > -1 || pre.dataset.hide) { $code.html(codeHtml.replace('<hide/>\n','')); // 코드 내의 '<hide/>\n' 문자열을 제거 $labelBtn.text(showTxt); // 버튼 텍스트를 '펼치기'로 변경 $wrapBtn.hide(); // 래핑 버튼 숨기기 $(this).hide(); // pre 요소 숨기기 $(this).attr('data-hide', 1); // data-hide 속성 추가 } else { $labelBtn.text(hideTxt); // 버튼 텍스트를 '접기'로 변경 $(this).show(); // pre 요소 보이기 } // 레이블 버튼 클릭 시 이벤트 핸들링 $labelBtn.on("click", function() { var txt = $(this).text(); // 버튼 텍스트 가져오기 $(this).text((txt==showTxt)?hideTxt:showTxt); // 버튼 텍스트 변경 if (txt==showTxt) { $wrapBtn.show(); // 래핑 버튼 보이기 $(pre).removeAttr('data-hide'); // data-hide 속성 제거 } else { $wrapBtn.hide(); // 래핑 버튼 숨기기 } $(pre).toggle(); // pre 요소 토글 (보이기/숨기기) }); // 레이블 div 클릭 시 버튼 클릭 이벤트 트리거 $labelDiv.on("click", function() { $labelBtn.triggerHandler("click"); }); // 레이블 div에 코드 정보 추가 $labelDiv.text(code).prop('title', code+' - '+showTxt+'/'+hideTxt); // 스타일이 적용된 레이블과 버튼을 담는 div 요소 생성 후 pre 요소 이전에 추가 var $codeLabel = $('<div class="codeLabel">').append($labelDiv).append($labelBtn).append($wrapBtn); $(this).before($codeLabel); }); </script> <!-- 코드 블럭 언어표시 스크립트 끝 --> <!--Code Block Hader(언어명) 적용 끝-->

위 코드를 </body> 위에 삽입
2. CSS 코드 삽입
css
접기/*Code Block Hader(언어명) 적용 시작*/ /* 코드블럭 언어 표시 스타일 */ /* 코드 블럭 레이블 컨테이너 */ .codeLabel { position: relative; /* 요소를 상대적인 위치로 설정하여 배치합니다. */ margin: 10px 0 0; /* 위쪽 여백을 10px, 아래와 좌우 여백을 0으로 설정합니다. */ } /* 모든 내용에 대한 선택 금지 및 커서 설정 */ .codeLabel * { // 폰트 사이즈 변경 user-select: none; /* 사용자의 텍스트 선택을 금지합니다. */ cursor: pointer; /* 커서 모양을 포인터로 설정하여 클릭 가능한 요소임을 나타냅니다. */ font-size: 0.7em; /* 요소 내용의 글꼴 크기를 0.7em으로 줄입니다. */ } /* 레이블 및 디자인 요소 컨테이너 */ .codeLabel > div { // 언어 표시창 배경색 및 글씨 색 변경 display: inline-block; /* 요소를 인라인 블록으로 설정하여 다른 요소와 나란히 배치합니다. */ color: #ccc; /* 텍스트의 색상을 회색(#ccc)으로 설정합니다. */ text-transform: uppercase; /* 텍스트를 모두 대문자로 변환하여 표시합니다. */ background-color: #282c34; /* 배경 색상을 어두운 회색(#282c34)으로 설정합니다. */ padding: 6px 10px; /* 안쪽 여백을 6px 위쪽/아래쪽, 10px 좌우로 설정합니다. */ border-top-left-radius: 10px; /* 왼쪽 상단 모서리 둥글게 반지름 설정 */ border-top-right-radius: 10px; /* 오른쪽 상단 모서리 둥글게 반지름 설정 */ } /* 보조 정보에 대한 스타일 */ .codeLabel span { // 숨김/펼치기 색상 변경 color: #9c9c9c; /* 텍스트의 색상을 연한 회색(#9c9c9c)으로 설정합니다. */ margin: 10px; /* 위아래 여백을 10px으로 추가하여 다른 요소와의 간격을 설정합니다. */ } /* 호버 시 색상 변경 */ .codeLabel *:hover { color: #ff5544; /* 마우스 호버 시 텍스트의 색상을 빨간색(#ff5544)으로 변경합니다. */ } /* 스타일이 적용된 요소 뒤에 오는 input 요소 스타일 변경 */ .codeLabel span ~ label input { height: auto !important; /* 높이를 자동으로 설정하되 중요성을 강조합니다. */ padding: 0 !important; /* 안쪽 여백을 0으로 설정하되 중요성을 강조합니다. */ margin: 0 !important; /* 좌우 여백을 0으로 설정하되 중요성을 강조합니다. */ } /*Code Block Hader(언어명) 적용 끝*/
CSS 가장 마지막 라인에 위 코드 추가
3. 적용 결과

728x90
'# Tistory > - Code block' 카테고리의 다른 글
[Tistory] Code block custom - Code 라인별 숫자 추가, 폰트 설정, 가로 스크롤 (0) | 2023.08.25 |
---|---|
[Tistory] Code block 테마 변경 - 심화편 (Highlight.js 활용) (0) | 2023.08.23 |
[Tistory] Code block 테마 변경 - 기본편(Syntax Highlight 적용) (0) | 2023.08.23 |