๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒˆ ํƒ€๋ฏธ๋…ธํŠธ

ํ‹ฐ์Šคํ† ๋ฆฌ ๋‹คํฌ๋ชจ๋“œ ์ ์šฉํ•˜๊ธฐ - by ๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ

by Tamii 2022. 2. 3.
๋ฐ˜์‘ํ˜•

๋“œ๋””์–ด ๋ฏธ๋ค„์™”๋˜ ๋‚˜์˜ Tami.zip ๋ธ”๋กœ๊ทธ ๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์—ˆ๋‹ค.

๋ฏธ๋ค„์™”๋˜ ์ด์œ ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€

1. ์‚ฌ์šฉ์ž ํ…Œ๋งˆ์— ๋”ฐ๋ฅธ ๋‹คํฌ๋ชจ๋“œ ์ง€์› ์ž๋ฃŒ๋งŒ ๋งŽ์Œ -> ๋‚ด๊ฐ€ ์›ํ•˜๋Š”๊ฑด ๋ฒ„ํŠผ์„ ํ†ตํ•œ ๋‹คํฌ๋ชจ๋“œ!

2. ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” ๋ฐฐ๊ฒฝ์„ ๋ฐ”๊พผ ํ›„์— ํ•„์š”ํ•œ CSS๋ฅผ ์ผ์ผ์ด ์žก์•„์„œ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ

 

ํ•˜์ง€๋งŒ, ์•„๋Š‘ํ•œ ๋ฐค์— ํ‚จ ๋‚˜์˜ ๋ธ”๋กœ๊ทธ๋Š” ํ•ญ์ƒ ์•„์ด์–ดํƒ์„ ์„ ์‚ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๊พธ๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๊ณ 

์—ฌ๋Ÿฌ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์—ˆ๋˜ ๋งŒํผ ์ƒ์„ธํ•˜๊ฒŒ ์–ด๋””์— ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋„ฃ์œผ๋ฉด ๋˜๋Š”์ง€ ๊นŒ์ง€ ์„ค๋ช…ํ•˜๋ ค ํ•œ๋‹ค.

 

๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—๋Š” ๐Ÿ”—๋‹คํฌ ๋ชจ๋“œ ๋ผ์ดํŠธ ๋ชจ๋“œ ํ† ๊ธ€ ์Šค์œ„์น˜ ๊ธฐ๋Šฅ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.

๋‹คํฌ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฑธ ์„ค๋ช…ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ธ”๋กœ๊ทธ๋“ค์ด ์žˆ์—ˆ์ง€๋งŒ, ํ•ด๋‹น ๋ธ”๋กœ๊ทธ๋งŒํผ ์ •ํ™•ํ•˜๊ฒŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์—†์—ˆ๋Š๋ฐ, ๋‹ค์‹œ ํ•œ๋ฒˆ ํ•ด๋‹น ํ•„์ž์—๊ฒŒ ๊ฐ์‚ฌ์˜ ๋ง์”€ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

 

ํŠน์ง• 

- ๋ฒ„ํŠผ์„ ํ†ตํ•œ ๋‹คํฌ๋ชจ๋“œ ์Šค์œ„์น˜

- ๊ธฐ๋ณธ์„ค์ • ์ž์ฒด๋Š” ๋‹คํฌ๋ชจ๋“œ

- ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ํ…Œ๋งˆ ์„ค์ •์€ ์ƒ๊ด€ ์—†์Œ

 

์ž‘์—… ์ˆœ์„œ

1. ๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ ์ƒ์„ฑ

2. CSS ๋ณ€๊ฒฝ

 


 

์ž ๊น! โœ‹๐Ÿป

๋ธ”๋กœ๊ทธ ๊ด€๋ฆฌ > ๊พธ๋ฏธ๊ธฐ/์Šคํ‚จ๋ณ€๊ฒฝ > ๋ณด๊ด€

ํ˜น์‹œ ๋ชจ๋ฅด๋‹ˆ ์Šคํ‚จ ํŽธ์ง‘ ์ „ ํ˜„์žฌ ์ƒํ™ฉ์„ ๋ณด๊ด€ํ•ด๋†“๊ณ  ๊ฐ€๊ธธ ๋ฐ”๋ž€๋‹ค!

(๋‚˜๋Š” ๋ชฐ๋ž์ง€๋งŒ, ๋…ธ์„์ด ์•Œ๋ ค์ฃผ์—ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ใ…Žใ…Ž)

 

 

 


 

 

1. ๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ ์ƒ์„ฑ

 

๋ธ”๋กœ๊ทธ ๊ด€๋ฆฌ > ๊พธ๋ฏธ๊ธฐ /์Šคํ‚จํŽธ์ง‘ > html ํŽธ์ง‘ (  ๋‚˜๋Š” ์›๋ž˜ BookClub ์Šคํ‚จ์ด์—ˆ์Œ )

 

<๋ธ”๋กœ๊ทธ ๊ธฐ๋ณธ html >

<html lang="ko">
<head>
	<script async ></script>
	<script></script>
    <!--์—ฌ๊ธฐ์— <script> </script> ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค„ ์˜ˆ์ •-->
</head>
<body>
  //์ค‘๋žต
</body>

//

๋ธ”๋กœ๊ทธ ๊ธฐ๋ณธ html์„ ์—ด๋ฉด ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฒผ๋Š”๋ฐ ๋Œ€๋žต ์œ„์™€๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. 

์—ฌ๊ธฐ์— ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋™์ž‘ํ•  javaScript ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค„ ๊ฑด๋ฐ, html ํŒŒ์ผ์— <script>๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•  ์ฝ”๋“œ๋Š” ๊ธฐ๋Šฅ script ์™€ ๋ฒ„ํŠผ 

 

 

< ๊ธฐ๋Šฅ script  >

<script>
  // ํ† ๊ธ€ ๋ฐ className ์„ค์ •
  $(document).ready(function () {
    $('a').click(function () {
      $('a').removeClass('active');
      $(this).addClass('active');
    });
    $('.switch').click(function () {
      $('body').toggleClass('light');
    });
  });
</script>
<script>
  // ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— theme ์„ค์ •
  function setTheme(themeName) {
    localStorage.setItem('theme', themeName);
    document.documentElement.className = themeName;
  }

  // theme ํ™•์ธ ํ›„ theme ํ† ๊ธ€
  function toggleTheme() {
    if (localStorage.getItem('theme') === 'theme-light') {
      setTheme('theme-dark');
    } else {
      setTheme('theme-light');
    }
  }

  // ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ ํ…Œ๋งˆ ์„ค์ • ์ฆ‰์‹œ์‹คํ–‰ํ•จ์ˆ˜
  (function () {
    if (localStorage.getItem('theme') === 'theme-light') {
      setTheme('theme-light');
    } else {
      setTheme('theme-dark');
    }
  })();
</script>

๋‚˜๋Š” ๊ธฐ๋ณธ์ด dark๋ชจ๋“œ์ด๊ธธ ์›ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด ์•„๋ž˜ ๋ฒ„ํŠผ์˜ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•จ

  • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 'light' class ์ถ”๊ฐ€
  • ํด๋ฆญ์‹œ ํ…Œ๋งˆ๊ฐ€ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ฐ˜๋Œ€๋กœ toggle
  • ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ ์ฆ‰์‹œ์‹คํ–‰๋  toggle ํ•จ์ˆ˜

 

 

 

<๋ฒ„ํŠผ ์ถ”๊ฐ€>

๋ฒ„ํŠผ์€ ์• ๋งคํ•œ๊ฒŒ ์›ํ•˜๋Š” ๊ณต๊ฐ„์— ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ๋‚˜๋Š” ๋กœ๊ณ  ์˜†์— ๋ฐ”๋กœ ์žˆ์—ˆ์œผ๋ฉด ํ•ด์„œ ํ•ด๋‹น๋ถ€๋ถ„์„ ์ฐพ์•„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค

<div id="wrap">
	<header id="header">
    	<div class="inner">
          <h1>
            	<a href="https://rrecoder.tistory.com/">
                	<s_if_var_logo>
                    	<img src="" alt="ํƒ€๋ฏธ.zip">
                    </s_if_var_logo>
                    <s_not_var_logo>
                    	ํƒ€๋ฏธ.zip
                    </s_not_var_logo>
                </a>
                <!--์—ฌ๊ธฐ์— ๋ฒ„ํŠผ์„ ๋„ฃ์—ˆ๋‹ค-->

          </h1>

๋ฒ„ํŠผ ( ํ•ด์™€ ๋‹ฌ icon์œผ๋กœ ๋˜์–ด์žˆ๊ณ  stroke์—๋Š” ์›ํ•˜๋Š” ์ƒ‰์ƒ hexa code๋ฅผ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.)

<button class="switch" onclick="toggleTheme()">
    <svg class="sun" fill="none" stroke="#F8D5EA" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="feather feather-sun" viewBox="0 0 24 24"><defs/><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
    <svg class="moon" fill="none" stroke="#4A6CB3" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="feather feather-moon" viewBox="0 0 24 24"><defs/><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg>
</button>

 

 

 

2. CSS ๋ณ€๊ฒฝ

HTML ์˜†์— CSS๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น HTML ์— ์žˆ๋Š” ๋ชจ๋“  ์Šคํƒ€์ผ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ 

๊ฑฐ์˜ ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ class๋กœ ์žก์•„ ์Šคํƒ€์ผ ์ง€์ •์„ ํ•˜๋‚˜์”ฉ ํ•ด์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

์ง€์ •ํ•  ์Šคํƒ€์ผ 

 

  • ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฒ„ํŠผ์˜ ์Šคํƒ€์ผ ์ง€์ •
  • ๋‹คํฌ๋ชจ๋“œ์ผ ๋•Œ ๋ธ”๋กœ๊ทธ ๋‚ด ์ปจํ…์ธ ๋“ค์˜ ์Šคํƒ€์ผ(์ƒ‰์ƒ) ์ง€์ •

 

 

 

 

 

 

 

 

ํฌ๊ฒŒ ์œ„์น˜๋Š” ์ƒ๊ด€ ์—†์ง„๋งŒ ๋‚˜๋Š” <body> ๋ฐ‘์— ๋ฐ”๋กœ ๋„ฃ์—ˆ๋‹ค.

theme ์ƒ‰์ƒ์€ ๋ฉ”์ธ ์ปฌ๋Ÿฌ๊ฐ€ ๋  ๊ฒƒ๋“ค์„ ์•Œ์•„์„œ ์ž‘์„ฑํ–ˆ๋‹ค.

gray์ธ ์ด์œ ๋Š” ์ฒ˜์Œ์— ๊ทธ๋ ˆ์ด ๊ณ„์—ด๋กœ ๋งž์ท„๋‹ค๊ฐ€ ๋ฉ”์ธ ์ปฌ๋Ÿฌ์— ๋งž์ถฐ ๋ณ€๊ฒฝํ–ˆ๊ธฐ ๋–„๋ฌธ์ด๋‹ค.

/* dark theme color palette. */
.theme-dark {
  --color-gray1: #fff;
  --color-gray2: #e9e4e7;
  --color-gray3: #d4c9cf;
  --color-gray4: #584852;
  --color-gray5: #67545f;
  --color-gray6: #70666c;
  --color-point: #c47d7d;
  --color-header: #947989;
}
/* light theme color palette */
.theme-light {
  --color-gray1: #1d181b;
  --color-gray2: #67545f;
  --color-gray3: #584852;
  --color-gray4: #d4c9cf;
  --color-gray5: #e9e4e7;
  --color-gray6: #fff;
  --color-point: #c47d7d;
  --color-header: #fff;
}


/* ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ๋ฒ„ํŠผ ์Šคํƒ€์ผ */
.switch {
	display: flex;
  position: relative;
  margin-left: 14px;
  top: 0;
  right: 0;
	padding: 2px;
  background-color: transparent;
  border: none;
  border-radius: 50%;
  color: #ddd;
  box-shadow: 1px 1px 3px 1px var(--color-gray5);;
  outline: none;
  cursor: pointer;

}

/* ๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ ๋‚ด svg ์Šคํƒ€์ผ */
svg {
  width: 0;
  height: 24px;
  transition: all 0.3s ease-in;
  transform-origin: center;
}

/* theme์— ๋”ฐ๋ฅธ toggle๋ฒ„ํŠผ ์Šคํƒ€์ผ ์ง€์ • */

.moon {
  opacity: 0;
  width: 0;
} 
.sun {
  width: 24px;
  bottom: 20px !important;
  left: 20px;
}

.light .moon {
  opacity: 1;
  width: 24px;
  bottom: 20px !important;
  left: 20px;
}
.light .sun {
  opacity: 0;
  width: 0;
}

 

๋งŒ์•ฝ ๊ธฐ๋ณธ ํšŒ์ƒ‰ ์ƒ‰์ƒ color theme๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์•„๋ž˜ theme๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ๋ฅผ

.theme-dark {
  --color-gray1: #fff;
  --color-gray2: #eee;
  --color-gray3: #999;
  --color-gray4: #777;
  --color-gray5: #555;
  --color-gray6: #70666c;
  --color-point: #e5b959;
}
/* ์–ด๋‘์šธ ๋•Œ ํ‘œ์‹œ๋˜๋Š” ์ƒ‰์ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. */
.theme-light {
  --color-gray1: #70666c;
  --color-gray2: #555;
  --color-gray3: #777;
  --color-gray4: #eee;
  --color-gray5: #eee;
  --color-gray6: #fff;
  --color-point: #e5b959;
}

 

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๊ฐ€ ๊ณค์š•์ธ๋ฐ.. ์–ด์ฉ”์ˆ˜๊ฐ€ ์—†๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด๋‘” ์ƒํƒœ์—์„œ ์ ์šฉ ๋ˆŒ๋Ÿฌ๋ณด๊ณ  ๋‹คํฌ๋ชจ๋“œ ์ƒํƒœ์—์„œ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆฐ ์นœ๊ตฌ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

์ •๋ง ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ ํˆด ์•ˆ์—์„œ ํ•˜๊ธฐ๋Š” ๋ฒ„๊ฑฐ์›Œ์„œ ํ˜„์žฌ CSS ์ฝ”๋“œ๋ฅผ vscode์— ์˜ฎ๊ธด๋’ค์— ์ž‘์—…ํ–ˆ๋‹ค.

var(--color-gray1)

 

a) ๋ธ”๋กœ๊ทธ์—์„œ ๊ฐœ๋ฐœ์ž๋„๊ตฌ (opt+cmd+i) ๋กœ ํ•ด๋‹น ์˜์—ญ์˜ className์„ ํ™•์ธ 

b) vscode์—์„œ ํ•ด๋‹น ์˜์—ญ   ์ปฌ๋Ÿฌํ…Œ๋งˆ์—์„œ ์›ํ•˜๋Š” ์ƒ‰์ƒ ์ง€์ •

์˜ˆ์‹œ

.cover-thumbnail-4 ul li .title {
	color: var(--color-gray4);
}

 

c) ๋ฐ˜๋ณต *100...๐Ÿค—

 

 

 

 

 

์ด๋ ‡๊ฒŒ ๋ช‡์‹ญ๋ฒˆ์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์™„์„ฑ! 

๋…ธ๋ ฅ๊ณผ ๋ˆ๊ธฐ๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์•„๋ฆ„๋‹ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..

 

 

 

๋””ํ…Œ์ผํ•˜๊ฒŒ ํ•œ๋‹ค๊ณ  ์ƒ‰์ƒ ๋ฐ”๊พธ๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ ธ์ง€๋งŒ ๋•๋ถ„์— ์ด๋Ÿฐ ์˜ˆ์˜๊ณ  ๋งŒ์กฑ์Šค๋Ÿฌ์šด...๋‹คํฌ๋ชจ๋“œ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค.

๋„ˆ๋ฌด ํ–‰๋ณตํ•˜๋‹ค .

๋ฐ”๊พธ๋ฉด์„œ ์ถ”๊ฐ€๋กœ ๋ฉ”์ธ์ด๋ฏธ์ง€์™€ ๋กœ๊ณ ๋„ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ ์ง์ ‘ ๊ทธ๋ฆฐ ํŒŒ์›Œํผํ”„ํƒ€๋ฏธ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค~

์—ฌ๋Ÿฌ๋ถ„๋„ ์ฆ๊ฑฐ์šด ๋‹คํฌ๋ชจ๋“œ ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ๋ฅผ ์‹œํ–‰ํ•ด๋ณด์„ธ์š”

๋Œ“๊ธ€