Tailwind์— ๋Œ€ํ•˜์—ฌ๐ŸŽ

Junยท6์ผ ์ „
0

tailwindCSS

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

Tailwind๊ฐ€ ๋ญ”๊ฐ€์š”?

์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ , ํ•ด๋‹น ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ํ†ตํ•ด์„œ ์กฐํ•ฉํ•˜์—ฌ ์‰ฝ๊ฒŒ css๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” CSS ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

ํ…Œ์ผ์œˆ๋“œ์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ์ •๋ง ๋งŽ์€ ์–‘์˜(์ง„์งœ ๋‹ค ๋ชป์„ผ๋‹ค) ํด๋ž˜์Šค๋“ค์ด ์„ธํŒ…๋˜์–ด ์žˆ๋Š”๋ฐ, ์‹ฌ์ง€์–ด ๊ฐ„๋‹จํ•˜๊ณ  ์›๋ž˜ CSS ์ž‘์„ฑ๋ฒ•์„ ์•Œ๋ฉด ์œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์ด๋ผ ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋†’์ง€ ์•Š๋‹ค.

<h3 className="mb-8 text-lg font-semibold" />

bootstrap์ด ์ข‹๋‚˜์š”, Tailwind๊ฐ€ ์ข‹๋‚˜์š”?

๋ช‡ ๋…„ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ bootstrap์ด tailwind๋ณด๋‹ค ๋” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ, ํ˜„์žฌ 2024๋…„์„ ๊ธฐ์ค€์œผ๋กœ tailwind๊ฐ€ ์‹œ์žฅ์—์„œ ๋” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

bootstrap vs tailwindCSS

npm trends์—์„œ๋„ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ์„ ์ •๋„์˜ ์ฐจ์ด์ด๋‹ค.

์‚ฌ์‹ค ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์€ ๊ฝค๋‚˜ ์–ด๋ ค์šด๊ฒŒ, bootstrap์˜ ๊ฒฝ์šฐ ๋””์ž์ธ ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ , tailwind๋Š” css๋ฅผ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ธ๋ผ์ธ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ CSS ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ˆ ๋งŒํผ, ํ˜„์žฌ ์‚ฌ์šฉ ์ฒ™๋„๋ฅผ ์•Œ๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

Tailwind๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ์ง€์›ํ•˜๊ณ , hover์™€ focus ๋“ฑ์„ ์ง€์›ํ•˜๋ฉฐ, ๋‹คํฌ ๋ชจ๋“œ ๋˜ํ•œ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์Šคํƒ€์ผ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, tailwind.config์˜ extend๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋””์ž์ธ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ธฐ์กด CSS์™€ ์ฐจ๋ณ„ํ™”๋˜๋Š” ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ, ํด๋ž˜์Šค์˜ ๋„ค์ด๋ฐ ๋“ฑ์— ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋˜๊ณ  ์ •ํ•ด์ง„ ๊ฐ’์„ ๋ผ์›Œ๋งž์ถ”๋Š” ์ž‘์„ฑ๋ฐฉ์‹์ด๊ธฐ์— ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น„์•ฝ์ ์œผ๋กœ ๋นจ๋ผ์กŒ๋‹ค.

๋˜ํ•œ, ์ผ๊ด€์ ์ธ ๋””์ž์ธ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์›นํŽ˜์ด์ง€์—์„œ ํ†ต์ผ์„ฑ์„ ์ฃผ๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ์ด๋Š” ์ข‹์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์œผ๋กœ ์ด์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๊ทธ๋Ÿผ ๋‹จ์ ์€ ์—†๋‚˜์š”? ๐Ÿ‘€

์„ธ์ƒ์— ๋‹จ์  ์—†๋Š” ์‚ฌ๋žŒ์ด ์—†๋“ฏ์ด, ํ…Œ์ผ์œˆ๋“œ๋„ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

์ผ๋‹จ, ์œ„์˜ ์žฅ์ ๊ณผ ์ƒ์ถฉ๋˜๋Š” ๋ฌธ์ œ๋กœ ๋ชป์ƒ๊ธด ์ฝ”๋“œ๋ฅผ ๊ผฝ๋Š”๋‹ค.

<div className="absolute bottom-full left-1/2 mb-14 hidden w-max -translate-x-1/2 transform group-hover:block">
  <div className="text-sm-medium bg-gray-90 relative z-10 rounded-lg px-8 py-4 text-sm text-white/90">
    {children}
    <div className="border-t-gray-90 absolute left-20 top-full h-0 w-0 -translate-x-1/2 border-x-8 border-t-8 border-x-transparent" />
  </div>
</div>

์œผ์•„์•…

์ง๊ด€์ ์ด๋ฉด์„œ๋„ ๋ชป์ƒ๊ธด ์ฝ”๋“œ์—ฌ์„œ, ํ•ด๋‹น ๋‹จ์ ์€ ์•„๋ฌด๋ž˜๋„ ์˜์›ํžˆ ๊ณ ์ณ์ง€์ง€ ์•Š์„ ๋“ฏ ์‹ถ๋‹ค.

๋˜ํ•œ, JS ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์„ค์ •์„ ์—ด์‹ฌํžˆ ๋งŒ์ง€๋ฉด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ธด ํ•˜์ง€๋งŒ ๊ต‰์žฅํžˆ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๊นŒ๋‹ค๋กœ์šด ๊ธธ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

npm install -D tailwindcss
npx tailwindcss init

tailwind ๊ณต์‹ ๋ฌธ์„œ

next๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, next๋ฅผ ์„ค์น˜ํ•  ๋•Œ tailwind๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ฌผ์–ด๋ณธ๋‹ค!

tailwind๋ฅผ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

tailwind์˜ ๋ถˆํŽธํ•œ ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ๋‚˜์™€์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ์œ ๋ช…ํ•œ 3๊ฐ€์ง€๋ฅผ ๋ฝ‘์ž๋ฉด clsx, cva, tailwind-merge์ด๋‹ค.

๋˜ํ•œ, tailwind CSS์˜ ํด๋ž˜์Šค๋ฅผ ๊ถŒ์žฅ ํด๋ž˜์Šค ์ˆœ์„œ์— ๋”ฐ๋ผ ์ •๋ ฌํ•ด์ฃผ๋Š” prettier ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์กด์žฌํ•œ๋‹ค.
prettier-plugin-tailwindcss

ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๊ด€ํ•ด์„œ๋Š” ๋‹ค์Œ์— ์ •๋ฆฌํ•˜๋„๋ก ํ•˜์ž!

์ฐธ๊ณ 

Tailwind CSS ๊ณต์‹๋ฌธ์„œ
Hello Tailwind CSS! | ์žฅ์ , ๋‹จ์ , ์‚ฌ์šฉ๋ฒ•
bootstrap VS tailwindcss

profile
์—ด์‹ฌํžˆ ์•„์ž์•„์ž

0๊ฐœ์˜ ๋Œ“๊ธ€