๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Dev ๐Ÿ’ป/Front-end

[CSS/JS] Tistory ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ œ์ž‘, ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๊ตฌํ˜„ - 2

by GeekSean 2025. 12. 15.
๋ฐ˜์‘ํ˜•

[Dev ๐Ÿ’ป/Front-end] - [CSS/JS] Tistory ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ œ์ž‘, ์‚ฌ์ด๋“œ๋ฐ” ๊พธ๋ฏธ๊ธฐ - 1

[Dev ๐Ÿ’ป/Front-end] - [CSS/JS] Tistory ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ œ์ž‘, ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๊ตฌํ˜„ - 2

[Dev ๐Ÿ’ป/Front-end] - [CSS/JS] Tistory ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ œ์ž‘, ํŽธ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - 3

 

์ €๋ฒˆ์—” ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์ปค์Šคํ…€ํ•ด์„œ ๊พธ๋ฏธ๋Š” ์ž‘์—…์„ ํ–ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” ์ „์ฒด์ ์ธ ๋ธ”๋กœ๊ทธ์˜ ์ƒ‰์ƒ์„ ์ž…ํžˆ๊ณ ,

๋‹คํฌ๋ชจ๋“œ๋กœ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

 

๋จผ์ € ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ์–ด๋””์— ๋„ฃ์œผ๋ฉด ์ข‹์„ ๊นŒ ํ•˜๋‹ค,

ํ—ค๋” ๋ถ€๋ถ„์— ์žˆ๋Š” ๋ฒ„ํŠผ๋“ค ์‚ฌ์ด์— ๋„ฃ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„,

html ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•ด ๋ณด์•˜๋‹ค.

 

util ํด๋ž˜์Šค div ํƒœ๊ทธ ์•ˆ์— ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ๊ตฌํ˜„ํ•ด ์ฃผ๊ณ 

<button type="button" class="dark-mode-toggle">
  <i class="fas fa-moon"></i>
  <span class="screen_out">๋‹คํฌ ๋ชจ๋“œ ํ† ๊ธ€</span>
</button>
 

 

์ด๋ฒˆ์—๋„ jQuery๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์ œ ๋‹คํฌ๋ชจ๋“œ๊ฐ€ ๋™์ž‘๋˜๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ด ์ฃผ๋„๋ก ํ•˜์ž

 

์ „์ฒด ์š”์†Œ์™€ ์•„์ด์ฝ˜ ๋“ฑ์„ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•˜๊ณ ,

์ง€๋‚œ ๊ฒŒ์‹œ๊ธ€์—์„œ ๋“ฑ๋กํ•œ ๊นƒํ—ˆ๋ธŒ ์œ„์ ฏ๋„ ๋‹คํฌ๋ชจ๋“œ์— ๋งž๊ฒŒ ๋ฐ”๋€Œ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,

๋ชจ๋“œ์— ๋”ฐ๋ผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๋‹ค๋ฅด๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•˜์˜€๋‹ค.

var $body = $('body');
var $darkModeToggle = $('.dark-mode-toggle');
var $githubCard = $('#github-stats-card');
var darkIcon = 'fa-moon';
var lightIcon = 'fa-sun';
var darkModeKey = 'darkMode';

var baseUrl = 'https://github-readme-stats.vercel.app/api?username=101Sean&show_icons=true&include_all_commits=true&theme=transparent&hide=issues,prs,contribs&hide_rank=true';
var lightParams = '&text_color=777777&title_color=777777&icon_color=214726';
var darkParams = '&text_color=999999&title_color=999999&icon_color=70a379';
 

 

๊ทธ๋ฆฌ๊ณ  ๊นƒํ—ˆ๋ธŒ ์œ„์ ฏ์˜ ์ƒ‰์ƒ ๋ณ€๊ฒฝ ํ•จ์ˆ˜์™€

function updateGithubCard(isDarkMode) {
    if ($githubCard.length) {
        var params = isDarkMode ? darkParams : lightParams;
        $githubCard.attr('src', baseUrl + params);
    }
}
 

 

์‹ค์ œ ํด๋ฆญ์‹œ, ๋‹คํฌ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ด์ฃผ๋Š” ํ† ๊ธ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ์ฃผ์—ˆ๋‹ค.

๋˜, ํ˜„์žฌ ์ƒํƒœ๋ฅผ localStorage์— ์ €์žฅํ•˜์—ฌ, ์ƒํƒœ ๊ฐ’์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์—ˆ๋‹ค.

$darkModeToggle.on('click', function() {
    if ($body.hasClass('dark-mode')) {
        $body.removeClass('dark-mode');
        localStorage.setItem(darkModeKey, 'disabled');
        $(this).find('i').removeClass(lightIcon).addClass(darkIcon);
        updateGithubCard(false);
    } else {
        $body.addClass('dark-mode');
        localStorage.setItem(darkModeKey, 'enabled');
        $(this).find('i').removeClass(darkIcon).addClass(lightIcon);
        updateGithubCard(true);
    }
});

var savedMode = localStorage.getItem(darkModeKey);

if (savedMode === 'enabled') {
    $body.addClass('dark-mode');
    $darkModeToggle.find('i').removeClass(darkIcon).addClass(lightIcon);
    updateGithubCard(true);
} else {
    $body.removeClass('dark-mode');
    $darkModeToggle.find('i').removeClass(lightIcon).addClass(darkIcon);
    updateGithubCard(false);
}
 

 

 

๋‹คํฌ๋ชจ๋“œ ์Šคํƒ€์ผ์‹œํŠธ ๊ตฌํ˜„

 

์ด์ œ ๊ธฐ๋Šฅ ์ž‘์—…์€ ๋๋งˆ์ณค๋‹ค.

๋‹ค์Œ์œผ๋กœ๋Š” ๋ธ”๋กœ๊ทธ์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„์„œ, ๋””์ž์ธ์„ ์ ์šฉํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

์ „์ฒด์ ์ธ ์ƒ‰๊น” ์ปจ์…‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 
๋ฐฐ๊ฒฝ์ƒ‰
ํ…Œ๋‘๋ฆฌ์ƒ‰
ํ…์ŠคํŠธ์ƒ‰
์„œ๋ธŒ ํ…์ŠคํŠธ์ƒ‰
๊ฐ•์กฐ์ƒ‰
๋ผ์ดํŠธ ๋ชจ๋“œ
#fafafa
#eeeeee
#555555
#999999
#214726
๋‹คํฌ ๋ชจ๋“œ
#1e1e1e
#333333
#d4d4d4
#a1a1a1
#70a379

 

๋จผ์ € ์ „์ฒด์ ์ธ ํŽ˜์ด์ง€์™€ ์˜์—ญ, ํ…Œ๋‘๋ฆฌ์˜ ์ƒ‰์ƒ ๋“ฑ

๋‹คํฌ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ๋  ์ƒ‰์ƒ์„ ์ง€์ • ํ•ด ์ฃผ๊ณ ,

body.dark-mode {
  background-color: #1E1E1E; 
  color: #D4D4D4; 
}

body.dark-mode html,
body.dark-mode #wrap,
body.dark-mode #container,
...
body.dark-mode #aside {
  background-color: #1E1E1E;
}

body.dark-mode #header,
body.dark-mode #footer {
  border-color: #333333;
  background-color: #1E1E1E;
}
 

 

๊ทธ ๋‹ค์Œ ๋งํฌ ํ…์ŠคํŠธ์˜ ์ƒ‰์ƒ๊ณผ, ๊ฒŒ์‹œ๊ธ€์˜ ๋ณธ๋ฌธ ํ…์ŠคํŠธ ์ƒ‰์ƒ ์ ์šฉ

body.dark-mode a,
body.dark-mode a:link,
body.dark-mode a:visited {
  color: #D4D4D4;
}
body.dark-mode h1, body.dark-mode h2, ... {
  color: #d4d4d4 ;
}

body.dark-mode .entry-content p:not(pre *),
...
body.dark-mode .entry-content li:not(pre *) {
  color: #D4D4D4;
}
 

 

๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ๋‹ค ๋ณด๋‹ˆ, ๊ฒŒ์‹œ๊ธ€์˜ ์ฝ”๋“œ ๋ธ”๋Ÿญ์—๋„ ๋‹คํฌ๋ชจ๋“œ ์ ์šฉ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ

์—ญ์‹œ ๋‹คํฌ๋ชจ๋“œ์— ์•Œ๋งž๊ฒŒ ์ ์šฉ์„ ํ•˜์˜€๋‹ค.

body.dark-mode pre,
body.dark-mode code {
  background-color: #333333; 
  border: 1px solid #444444;
  color: #D4D4D4;
}
body.dark-mode blockquote {
  border-left-color: #70A379; 
  background-color: #1E1E1E;
}

body.dark-mode input[type=text]:not(#search),
body.dark-mode textarea {
  background-color: #333333;
  border-color: #555555;
  color: #D4D4D4;
}
 

 

๋Œ“๊ธ€ ๋“ฑ๋ก ๋ฒ„ํŠผ, ๋ธ”๋กœ๊ทธ ํƒ€์ดํ‹€, ๊ฐ•์กฐ ํ…์ŠคํŠธ ๋“ฑ

๊ฐ•์กฐ์ƒ‰์ด ๋“ค์–ด๊ฐ€๋Š” ๋ถ€๋ถ„๋„ ์ƒ‰์ƒ์„ ์ง€์ • ํ•ด ์ฃผ๊ณ ,

body.dark-mode #header h1 a {
  color: #70A379;
}
body.dark-mode .post-header h1 em {
  color: #70A379;
}
body.dark-mode .tt_category .link_tit {
  color: #70A379;
}
body.dark-mode .tt-comment-cont .tt-btn_register {
  background-color: #70A379;
}
 

 

์ด๋ฏธ์ง€ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ„, tistory ๊ธฐ๋ณธ ์•„์ด์ฝ˜๋“ค์€

์ƒ‰ ๋ฐ˜์ „ ์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ตฌํ˜„ํ•ด ์ฃผ์—ˆ๋‹ค.

body.dark-mode #menubar_wrapper .btn_menu_toolbar .ico_tistory_sign {
  filter: invert(80%); 
}
body.dark-mode .pagination .prev,
body.dark-mode .pagination .next {
  filter: invert(80%); 
}
 

 

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“œ ์ „ํ™˜ ์‹œ ๋ถ€๋“œ๋Ÿฌ์šด ํšจ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด

ํŠธ๋žœ์ง€์…˜๋„ ๋„ฃ์–ด ์ฃผ์—ˆ๋‹ค.

body {
  transition: background-color 0.5s ease, color 0.5s ease;
}
 

 

์ด ์™ธ์—๋„ ์ง์ ‘ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ๋ฅผ ์ผœ์„œ

์ƒ‰์ƒ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์ง์ ‘ ์ฐพ์•„์„œ ์ „๋ถ€ ์ˆ˜์ • ์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

 

์ด๋กœ์จ ์ž‘์—…์€ ๋ชจ๋‘ ๋๋‚ฌ๋‹ค.

https://github.com/101Sean/tistory_custom_skin

 

GitHub - 101Sean/tistory_custom_skin: ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ ์ปค์Šคํ…€์šฉ html

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ ์ปค์Šคํ…€์šฉ html. Contribute to 101Sean/tistory_custom_skin development by creating an account on GitHub.

github.com

 

์ ์šฉํ•˜๊ณ  ๋‚˜๋‹ˆ, ๋‹คํฌ ๋ชจ๋“œ๋กœ ๋ณด๋Š” ์›น ํŽ˜์ด์ง€๋„ ์ œ๋ฒ• ๊น”๋”ํ•ด์„œ ์ข‹์•˜๋‹ค.

 

ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ๋งค๋„๋Ÿฝ๊ฒŒ ๋‹คํฌ๋ชจ๋“œ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๋ชจ์Šต

 

 

๋™์˜์ƒ ์„œ๋น„์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์–ด ํ•ด๋‹น ์ฝ˜ํ…์ธ ๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

 

์ด๋ฒˆ ์ž‘์—…์€ ํ•˜๋‚˜ํ•˜๋‚˜ ์š”์†Œ๋ฅผ ์ฐพ์€ ๋’ค,

์Šคํƒ€์ผ์‹œํŠธ(css)๋ฅผ ์† ๋ณด๋Š” ์ž‘์—…์ด ๋งŽ์•„์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋Š”๋ฐ

์™„์„ฑํ•˜๊ณ  ๋‚˜๋‹ˆ ์ด์˜๊ฒŒ ์ ์šฉ๋˜์–ด์„œ ๋ฟŒ๋“ฏํ•˜๋‹ค.

 

๋‹ค์Œ์—๋Š” ๊ฒŒ์‹œ๊ธ€์˜ ์š”์†Œ๋“ค์˜ ์„ธ๋ถ€์ ์ธ ์กฐ์ •๊ณผ,

๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ์–ด๋ ค์šด ๊ธ€์„ ์ฝ์–ด์ฃผ๋Š” ์™ธ๊ตญ ์นœ๊ตฌ๋“ค์„ ์œ„ํ•œ ํ—Œ์ • ๊ธฐ๋Šฅ์œผ๋กœ,

ํŽ˜์ด์ง€ ๋ฒˆ์—ญ ๊ธฐ๋Šฅ๋„ ๋งŒ๋“ค์–ด์„œ ์ถ”๊ฐ€ ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

์›๋ณธ ๊ฒŒ์‹œ๊ธ€

https://blog.naver.com/101artspace/224085372149

 

Tistory ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ œ์ž‘ํ•˜๊ธฐ, ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๊ตฌํ˜„ - 2

์ €๋ฒˆ์—” ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์ปค์Šคํ…€ํ•ด์„œ ๊พธ๋ฏธ๋Š” ์ž‘์—…์„ ํ–ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ „์ฒด์ ์ธ ๋ธ”๋กœ๊ทธ์˜ ์ƒ‰์ƒ์„ ์ž…ํžˆ๊ณ , ๋‹คํฌ๋ชจ๋“œ...

blog.naver.com

๋ฐ˜์‘ํ˜•