코드 블럭 수정(mac 형태) + 복사

2024. 7. 5. 14:11·코드 정리/코드 정리 - Tistory
목차
  1. JS 생성 부분
  2. CSS 부분
  3. HTML 부분
  4. 참고

JS 생성 부분

JS 파일을 스킨 편집 - 파일 업로드 - 추가를 이용하여 업로드 하시면 됩니다.


    
javascript
const COPY_TEXT_CHANGE_OFFSET = 1500;
const COPY_ERROR_MESSAGE = "코드를 복사할 수 없습니다. 다시 시도해 주세요.";
const COPY_ICON = `
<svg width="14" height="14" fill="currentColor" class="icon" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M4 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1h1v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1v1z"/>
</svg>`;
const CHECK_ICON = `<span class="copied-text">Copied!</span>`;
const func = () => {
const codeBlocks = document.querySelectorAll("pre > code");
// 복사 Function
const copyBlockCode = async (target) => {
if (!target) return;
try {
const code = decodeURI(target.dataset.code);
await navigator.clipboard.writeText(code);
target.innerHTML = CHECK_ICON;
setTimeout(() => {
target.innerHTML = COPY_ICON;
}, COPY_TEXT_CHANGE_OFFSET);
} catch (error) {
alert(COPY_ERROR_MESSAGE);
console.error(error);
}
};
// 코드 블럭 생성 및 복사 버튼 삽입
for (const codeBlock of codeBlocks) {
console.log("test3");
const data_ke_language = codeBlock.parentElement.getAttribute("data-ke-language") || "";
const codes = codeBlock.innerHTML.match(/(.*)(\n|.*$)/g).filter(Boolean);
const processedCodes = codes.reduce((prev, cur) => prev + `<div class="line">${cur}</div>`, "");
const copyButtonHTML = `<button type="button" class="copy-btn" data-code="${encodeURI(
codeBlock.textContent
)}">${COPY_ICON}</button>`;
const codeBody = `<div class="code-body">${processedCodes}</div>`;
const codeHeader = `
<div class="code-header">
<span class="red btn"></span>
<span class="yellow btn"></span>
<span class="green btn"></span>
<span class="language-label">${data_ke_language}</span>
${copyButtonHTML}
</div>`;
codeBlock.innerHTML = codeHeader + codeBody;
}
// 복사 버튼에 이벤트 리스너 연결
const copyButtons = document.querySelectorAll(".copy-btn");
copyButtons.forEach((button) => {
button.addEventListener("click", () => copyBlockCode(button));
});
};
// 랜더링 전 자바스크립트 실행을 막기 위함
window.addEventListener("load", () => {
func();
});

 

codeblock.js
0.00MB

 

 

 

 

CSS 부분

CSS 파일의 내용을 복사하여 스킨 편집 - CSS에 추가하시면 됩니다.


    
css
/* 웹 폰트는 CSS 파일 가장 위에 적기 */
@font-face {
font-family: "D2Coding";
src: url("https://fastly.jsdelivr.net/gh/projectnoonnu/noonfonts_three@1.0/D2Coding.woff") format("woff");
font-weight: normal;
font-style: normal;
}
/* 코드블럭 CSS Start */
pre {
position: relative;
}
.hljs {
display: flex !important;
flex-direction: column;
padding: 0 !important;
font-size: 14px;
border-radius: 8px;
box-shadow: 0 12px 24px rgb(0 0 0 / 40%);
color: #cfd2d1;
background-color: #343131;
font-family: D2Coding, Menlo, Courier, monospace;
}
.hljs .language-label {
margin-left: 10px;
flex-grow: 1;
align-self: center;
font-weight: bold;
text-transform: capitalize;
display: flex;
align-items: center;
line-height: 1;
padding-top: 1px;
}
.hljs .line {
counter-increment: line-idx;
line-height: 1.5;
white-space: pre;
}
.hljs .line::before {
content: counter(line-idx);
display: inline-block;
width: 24px;
margin-right: 16px;
text-align: right;
font-size: 0.8rem;
color: #747a7a;
}
/* 마우스 hover 시 하이라이트 - 쓸 사람은 주석 해제하시길 */
/* .hljs .line:hover {
background-color: #262830;
}
.hljs .line:hover::before {
color: #cfd2d1;
} */
.hljs .code-header {
display: flex;
align-items: center;
padding: 14px;
background-color: #434041;
border-radius: 8px 8px 0 0;
}
.hljs .code-header .btn {
width: 15px;
height: 15px;
margin: 0 5px;
border-radius: 50%;
}
.hljs .code-header .btn.red {
background-color: #f5655b;
}
.hljs .code-header .btn.yellow {
background-color: #f6bd3b;
}
.hljs .code-header .btn.green {
background-color: #43c645;
}
.hljs .code-body {
max-height: 1000px;
margin: 8px;
overflow: auto;
padding-bottom: 10px;
}
.hljs .code-body::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.hljs .code-body::-webkit-scrollbar-thumb {
background-color: rgb(92 90 90);
border-radius: 4px;
}
.hljs .code-body::-webkit-scrollbar-corner {
display: none;
}
.hljs .copy-btn {
display: inline-flex;
align-items: center;
justify-content: center;
margin-left: auto;
padding: 0px 12px;
height: 32px;
line-height: 1;
font-size: 12px;
font-weight: normal;
color: #fff;
background-color: #ffffff17;
border: none;
border-radius: 4px;
cursor: pointer;
white-space: nowrap;
transition: all 0.3s ease;
}
.hljs .copy-btn:hover {
background-color: #ffffff30;
}
.copied-text {
font-size: 12px;
font-weight: bold;
display: inline-block;
vertical-align: middle;
line-height: 1;
}
/* 코드블럭 CSS End */

 

codeblock.css
0.00MB

 

 

 

 

HTML 부분

HTML 내용을 복사하여 스킨 편집 - HTML 맨 아래에 형식에 맞춰 추가하시면 됩니다.


    
html
</body>
<script defer src="./images/codeblock.js"></script>
</html>

 


참고

 

2. [hELLO 스킨] 코드 블럭의 테마, 폰트 설정 및 커스터마이징

안녕하세요, 레오입니다. 스킨을 새로운 버전으로 업데이트를 했으니, 이제부터 본격적으로 스킨을 커스터마이징 해보겠습니다. 제가 가장 먼저 수정해야겠다고 마음 먹은 부분은 개발자들이

jake8440.tistory.com

 

 

'코드 정리 > 코드 정리 - Tistory' 카테고리의 다른 글

날짜 형식  (0) 2024.07.11
자동 목차에 제목4(h4) 추가  (0) 2024.07.10
마우스 모양 변경 및 클릭시 파동 효과  (0) 2024.07.10
관리 사이드바  (0) 2024.07.05
티스토리 홈 + 로그인/로그아웃 버튼 만들기  (1) 2024.07.05
  1. JS 생성 부분
  2. CSS 부분
  3. HTML 부분
  4. 참고
'코드 정리/코드 정리 - Tistory' 카테고리의 다른 글
  • 자동 목차에 제목4(h4) 추가
  • 마우스 모양 변경 및 클릭시 파동 효과
  • 관리 사이드바
  • 티스토리 홈 + 로그인/로그아웃 버튼 만들기
분석가 황규진
분석가 황규진
공공기관 위험평가관련 부서에서 근무하고 있습니다.
HGJ's Insight공공기관 위험평가관련 부서에서 근무하고 있습니다.
글쓰기 관리
분석가 황규진
HGJ's Insight
홈
|
로그인
  • 전체 글 574
    • 개인 활동(일상) 4
      • 독서 2
      • 근황 공유 1
      • 업무 관련 1
    • 개인 활동(공부) 59
      • Tableau Bootcamp 10
      • 금융 공부 11
      • 직무 공부 26
      • 강의 12
    • 개인프로젝트 4
      • 신용카드 연체 평가 모델 0
      • 대출 승인 여부 예측 모델 4
    • 자격증 7
      • 빅데이터분석기사 1
      • 정보처리기사 1
      • 경영정보시각화 1
      • SQL개발자(SQLD) 1
      • 데이터 분석 준전문가(ADsP) 1
      • 통계적품질관리(SPC) 1
      • AICE Associate 1
    • 코드 정리 11
      • 코드 정리 - Tistory 8
      • 코드 정리 - Python 3
    • 코딩테스트연습 116
      • SQL_프로그래머스 116
    • 취업사관학교 9기 199
      • 모닝스쿨 54
      • 스스로 모닝스쿨 125
      • 직무 스터디 20
      • 반성과 다짐 0
    • 빅데이터 분석가 양성과정 173
      • Python 88
      • Python - 머신러닝 26
      • Python - 딥러닝 31
      • PyQt 4
      • JavaScript 10
      • MySQL 13
      • Node.js 1
hELLO· Designed By정상우.v4.6.1
분석가 황규진
코드 블럭 수정(mac 형태) + 복사
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.