๐Ÿšค ์„ฑ์žฅ์ผ์ง€ 7.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

โš› (7.0)<์™„์ „ ๊ฐœํŽธ> ํŒŒ์ธ๋งŒ ํ•™์Šต๋ฒ•์„ ์•Œ๊ฒŒ ๋œ๋งŒํผ, ์„ฑ์žฅ์ผ์ง€๋Š” ์ •๋ง ๊ทธ ๋‚ ์˜ ํ‚ค์›Œ๋“œ ์ค‘์‹ฌ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค.

tailwind dark mode

tailwind์—์„œ ๋‹คํฌ ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ media์™€ class๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

media

๋”ฐ๋กœ ์„ค์ •์„ ํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ dark:๋ฅผ ๋ถ™์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ํ˜„์žฌ ๋‚ด ํ™˜๊ฒฝ์˜ ์‹œ์Šคํ…œ ์„ค์ •์— ๋”ฐ๋ผ์„œ ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ ์ ์šฉ๋œ๋‹ค.

<div class="bg-white dark:bg-gray-800">Mode</div>

class

class๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฐ„๋‹จํ•˜๋‹ค. ์ผ๋‹จ tailwind.config.js์—์„œ darkMode๋ฅผ class๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

module.exports = {
  darkMode: 'class',
};

๊ทธ๋ฆฌ๊ณ  class๋ฅผ ์ด์šฉํ•ด์„œ ๋‹คํฌ ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ณณ์— dark๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

<div class="bg-white dark:bg-gray-800">Mode</div>

๊ทธ๋Ÿฐ๋ฐ ์ด ๋•Œ, dark๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. dark๋ฅผ ๋ถ™์—ฌ์ฃผ๊ณ  ์‹ถ์€ ๊ณณ์— dark๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

<div class="bg-white dark:bg-gray-800 dark">Mode</div>

์ด ๋•Œ, ๋ณดํ†ต ํŠน์ • ํƒœ๊ทธ๋งŒ ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๊ธฐ ๋–„๋ฌธ์— ๊ฐ€์žฅ ์ตœ์ƒ๋‹จ ํƒœ๊ทธ์ธ html์˜ class์— dark๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

<html class="dark"></html>

์ด ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ ๋‹คํฌ ๋ชจ๋“œ๋ฅผ toggleํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Next.js 13 app ๋ผ์šฐํ„ฐ ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ๊ตฌ์กฐ ์žก๊ธฐ

๋‚ด๊ฐ€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋Š” ํ˜„์žฌ๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง€ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค. home, user, size, ingredient, result ์ •๋„์˜ ํŽ˜์ด์ง€๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋•Œ user, ingredient, result๋Š” ์•„์ด์Šคํฌ๋ฆผ ์กฐํ•ฉ์„ ๊ฒฐ์ • ๋ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ํŽ˜์ด์ง€๋กœ ํ•˜๋‚˜์˜ ํด๋”๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.(๋ผ์šฐํŒ…์— ์˜ํ–ฅ์„ ์ฃผ๋ฉด ์•ˆ๋œ๋‹ค!) ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ํด๋”๋ช…์„ ()๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ๋œ๋‹ค. ์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ๋ผ์šฐํŒ… ๊ตฌ์กฐ๋ฅผ ์žก์€ ์˜ˆ์‹œ์ด๋‹ค.

๐Ÿ“ฆ
โ”œโ”€ src
โ”‚  โ””โ”€ app
โ”‚     โ”œโ”€ (combination)
โ”‚     โ”‚  โ”œโ”€ ingredient
โ”‚     โ”‚  โ”‚  โ””โ”€ page.tsx
โ”‚     โ”‚  โ”œโ”€ result
โ”‚     โ”‚  โ”‚  โ””โ”€ page.tsx
โ”‚     โ”‚  โ””โ”€ size
โ”‚     โ”‚     โ””โ”€ page.tsx
โ”‚     โ”œโ”€ favicon.ico
โ”‚     โ”œโ”€ globals.css
โ”‚     โ”œโ”€ layout.tsx
โ”‚     โ”œโ”€ not-found.tsx
โ”‚     โ”œโ”€ page.tsx
โ”‚     โ””โ”€ user
โ”‚        โ””โ”€ page.tsx

ยฉgenerated by Project Tree Generator

๐Ÿ“ ํšŒ๊ณ 

ํ™•์‹คํžˆ ์กฐ๊ธˆ์”ฉ ๋ฐฐ์šฐ๋ฉด์„œ ์ ์šฉํ•˜๋‹ค๋ณด๋‹ˆ๊นŒ ์†๋„๊ฐ€ ๋”๋”˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฑฐ๊ธฐ์— ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง๋„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆโ€ฆ ์ฐธ ๋‚ด๊ฐ€ ์š•์‹ฌ์ด ๋งŽ์€๊ฑด์ง€โ€ฆ ๊ทธ๋ž˜๋„ ์กฐ๊ธˆ์”ฉ ์ด๋ ‡๊ฒŒ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค ใ…‹ใ…‹ใ…‹ ๋‹น์žฅ ๋‚˜์•„๊ฐˆ ๋•Œ๋Š” ์กฐ๊ธˆ์”ฉ ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‚˜์ค‘์— ํ•œ๋ฒˆ์— ํ ์„ฑ์žฅํ•˜๋Š” ๊ธฐ๋ถ„์ด ๋“ค์–ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™๋‹ค :)

์ฐธ๊ณ