Tailwind ์‚ฌ์šฉํ•˜๊ธฐ

Tailwind๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํผ์ŠคํŠธ(Utility-first) CSS ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฏธ๋ฆฌ ์ •์˜๋œ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•ด ๋น ๋ฅด๊ฒŒ ์Šคํƒ€์ผ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ CSS ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ Tailwind๋Š” ๋ณ„๋„์˜ ์Šคํƒ€์ผ ์‹œํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹ , HTML ํด๋ž˜์Šค์— ์ง์ ‘ ์Šคํƒ€์ผ๋ง ๊ด€๋ จ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋“ค์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.

์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค

Tailwind๋Š” ๊ฐ ์Šคํƒ€์ผ์„ ๋‹จ์ผ ํด๋ž˜์Šค์— ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, text-center, bg-blue-500, p-4์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์กฐํ•ฉํ•ด ํ…์ŠคํŠธ ์ •๋ ฌ, ๋ฐฐ๊ฒฝ์ƒ‰ ์„ค์ •, ํŒจ๋”ฉ ๋“ฑ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜• ๋””์ž์ธ

Tailwind๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, md:text-center์™€ ๊ฐ™์ด ํŠน์ • ํ™”๋ฉด ํฌ๊ธฐ์—์„œ๋งŒ ์ ์šฉ๋  ์Šคํƒ€์ผ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ์ •์˜๋œ ํ…Œ๋งˆ

Tailwind๋Š” ์ƒ‰์ƒ, ๊ธ€๊ผด ํฌ๊ธฐ, ์—ฌ๋ฐฑ ๋“ฑ์„ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ฐ’์œผ๋กœ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ์—ฐ์„ฑ

Tailwind๋Š” ๋งค์šฐ ์œ ์—ฐํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ฅด๋ฉด์„œ๋„ ์„ธ๋ถ€์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JIT(Just-In-Time)

ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์Šคํƒ€์ผ์„ ์ƒ์„ฑํ•ด ์ฃผ๋Š” JIT ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ํด๋ž˜์Šค๊ฐ€ ๋นŒ๋“œ์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋นŒ๋“œ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

tailwond ํ…์ŠคํŠธ ํฌ๊ธฐ ํด๋ž˜์Šค(font-size)

ํ…Œ์ผ์œˆ๋“œ CSS(Tailwind CSS)์—์„œ ํฐํŠธ ํฌ๊ธฐ๋Š” text- ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ํ…Œ์ผ์œˆ๋“œ์˜ ํฐํŠธ ํฌ๊ธฐ ํด๋ž˜์Šค์˜ ์˜ˆ์‹œ์™€ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ์‹ค์ œ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. (Tailwind CSS v3.4 ๊ธฐ์ค€)
<p class="text-xs">text-xs: 0.75rem (12px)</p>
<p class="text-sm">text-sm: 0.875rem (14px)</p>
<p class="text-base">text-base: 1rem (16px)</p>
<p class="text-lg">text-lg: 1.125rem (18px)</p>
<p class="text-xl">text-xl: 1.25rem (20px)</p>
<p class="text-2xl">text-2xl: 1.5rem (24px)</p>
<p class="text-3xl">text-3xl: 1.875rem (30px)</p>
<p class="text-4xl">text-4xl: 2.25rem (36px)</p>
<p class="text-5xl">text-5xl: 3rem (48px)</p>
<p class="text-6xl">text-6xl: 3.75rem (60px)</p>
<p class="text-7xl">text-7xl: 4.5rem (72px)</p>
<p class="text-8xl">text-8xl: 6rem (96px)</p>
<p class="text-9xl">text-9xl: 8rem (128px)</p>
ํด๋ž˜์Šค
rem ํฌ๊ธฐ
px ํฌ๊ธฐ
text-xs0.75rem12px
text-sm0.875rem14px
text-base1rem16px
text-lg1.125rem18px
text-xl1.25rem20px
text-xs0.75rem12px
text-2xl1.5rem24px
text-3xl1.875rem30px
text-4xl2.25rem36px
text-5xl3rem48px
text-6xl3.75rem60px
text-7xl4.5rem72px
text-8xl6rem96px
text-9xl8rem128px

tailwond ํฐํŠธ ๋‘๊ป˜ (font-weight)

<p class="font-thin">font-thin: font-weight: 100</p>
<p class="font-extralight">font-extralight: font-weight: 200</p>
<p class="font-light">font-light: font-weight: 300</p>
<p class="font-normal">font-normal: font-weight: 400</p>
<p class="font-medium">font-medium: font-weight: 500</p>
<p class="font-semibold">font-semibold: font-weight: 600</p>
<p class="font-bold">font-bold: font-weight: 700</p>
<p class="font-extrabold">font-extrabold: font-weight: 800</p>
<p class="font-black">font-black: font-weight: 900</p>
      
ํด๋ž˜์Šค
font-weight
font-thin100
font-extralight200
font-light300
font-normal400
font-medium500
font-semibold600
font-bold700
font-extrabold800
font-black900

tailwond ๋ผ์ธ ๋†’์ด (line-height)

<p class="leading-none">leading-none: line-height: 1</p>
<p class="leading-tight">leading-tight: line-height: 1.25</p>
<p class="leading-snug">leading-snug: line-height: 1.375</p>
<p class="leading-normal">leading-normal: line-height: 1.5</p>
<p class="leading-relaxed">leading-relaxed: line-height: 1.625</p>
<p class="leading-loose">leading-loose: line-height: 2</p>
<p class="leading-3">leading-3: line-height: 0.75rem (12px)</p>
<p class="leading-4">leading-4: line-height: 1rem (16px)</p>
<p class="leading-5">leading-5: line-height: 1.25rem (20px)</p>
<!-- leading-6 ~ leading-10๊นŒ์ง€ ์ง€์› -->
ํด๋ž˜์Šค
line-height
leading-none1
leading-tight1.25
leading-snug1.375
leading-normal1.5
leading-relaxed1.625
leading-loose2
leading-30.75rem (12px)
leading-41rem (16px)
leading-51.25rem (20px)
leading-61.5rem (24px)
leading-71.75rem (28px)
leading-82rem (32px)
leading-92.25rem (36px)
leading-102.5rem (40px)

tailwond ๋ ˆํ„ฐ ์ŠคํŽ˜์ด์‹ฑ (letter-spacing)

<p class="tracking-tighter">tracking-tighter: letter-spacing: -0.05em</p>
<p class="tracking-tight">tracking-tight: letter-spacing: -0.025em</p>
<p class="tracking-normal">tracking-normal: letter-spacing: 0</p>
<p class="tracking-wide">tracking-wide: letter-spacing: 0.025em</p>
<p class="tracking-wider">tracking-wider: letter-spacing: 0.05em</p>
<p class="tracking-widest">tracking-widest: letter-spacing: 0.1em</p>
ํด๋ž˜์Šค
letter-spacing
tracking-tighter-0.05em
tracking-tight-0.025em
tracking-normal0
tracking-wide0.025em
tracking-wider0.05em
tracking-widest0.1em

tailwond ํ…Œ์ผ์œˆ๋“œ ์ŠคํŽ˜์ด์‹ฑ ์Šค์ผ€์ผ

ํ…Œ์ผ์œˆ๋“œ์˜ ๋งˆ์ง„(m-)๊ณผ ํŒจ๋”ฉ(p-)์€ ๋™์ผํ•œ ์ŠคํŽ˜์ด์‹ฑ ์Šค์ผ€์ผ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • 1 ๋‹จ์œ„ = 0.25rem = 4px (๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ๋ฃจํŠธ ํฐํŠธ ํฌ๊ธฐ 1rem = 16px ๊ธฐ์ค€)
  • n ๊ฐ’์— ๋”ฐ๋ผ n * 0.25rem์œผ๋กœ ๊ณ„์‚ฐ
  • ํ…Œ์ผ์œˆ๋“œ์˜ ์ŠคํŽ˜์ด์‹ฑ ์‹œ์Šคํ…œ์€ top, right, bottom, left ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ง„: mt-n, mr-n, mb-n, ml-n์€ ๋ชจ๋‘ ๋™์ผํ•œ n * 0.25rem ๊ฐ’์„ ๊ฐ€์ง.
  • ํŒจ๋”ฉ: pt-n, pr-n, pb-n, pl-n๋„ ๋™์ผํ•œ n * 0.25rem ๊ฐ’์„ ๊ฐ€์ง.
<div class="mt-0">mt-0: margin-top: 0px</div> <!-- mr-0, mb-0, ml-0 ๋™์ผ -->
<div class="mt-1">mt-1: margin-top: 0.25rem (4px)</div> <!-- mr-1, mb-1, ml-1 ๋™์ผ -->
<div class="mt-2">mt-2: margin-top: 0.5rem (8px)</div> <!-- mr-2, mb-2, ml-2 ๋™์ผ -->
<div class="mt-3">mt-3: margin-top: 0.75rem (12px)</div> <!-- mr-3, mb-3, ml-3 ๋™์ผ -->
<div class="mt-4">mt-4: margin-top: 1rem (16px)</div> <!-- mr-4, mb-4, ml-4 ๋™์ผ -->
<div class="mt-5">mt-5: margin-top: 1.25rem (20px)</div> <!-- mr-5, mb-5, ml-5 ๋™์ผ -->
<div class="mt-6">mt-6: margin-top: 1.5rem (24px)</div> <!-- mr-6, mb-6, ml-6 ๋™์ผ -->
<div class="mt-7">mt-7: margin-top: 1.75rem (28px)</div> <!-- mr-7, mb-7, ml-7 ๋™์ผ -->
<div class="mt-8">mt-8: margin-top: 2rem (32px)</div> <!-- mr-8, mb-8, ml-8 ๋™์ผ -->
<div class="mt-9">mt-9: margin-top: 2.25rem (36px)</div> <!-- mr-9, mb-9, ml-9 ๋™์ผ -->
<div class="mt-10">mt-10: margin-top: 2.5rem (40px)</div> <!-- mr-10, mb-10, ml-10 ๋™์ผ -->
mt-n, mr-n, mb-n, ml-n, pt-n, pr-n, pb-n, pl-n
์Šค์ผ€์ผ
n=00px
n=10.25rem (4px)
n=20.5rem (8px)
n=30.75rem (12px)
n=41rem (16px)
n=51.25rem (20px)
n=61.5rem (24px)
n=71.75rem (28px))
n=82rem (32px)
n=92.25rem (36px)
n=102.5rem (40px)

tailwond ์ปค์Šคํ…€ ์„ค์ • (tailwind.config.js)

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      // ์ปค์Šคํ…€ ํŒจ๋”ฉ
      padding: {
        '10': '2.5rem', // 40px
        '12': '3rem',   // 48px
      },
      // ์ปค์Šคํ…€ ๋งˆ์ง„
      margin: {
        '10': '2.5rem', // 40px
        '12': '3rem',   // 48px
      },
      // ์ปค์Šคํ…€ ํฐํŠธ ๋‘๊ป˜
      fontWeight: {
        'extra-thin': 50,
      },
      // ์ปค์Šคํ…€ ๋ผ์ธ ๋†’์ด
      lineHeight: {
        11: '2.75rem', // 44px
        12: '3rem',    // 48px
      },
      // ์ปค์Šคํ…€ ๋ ˆํ„ฐ ์ŠคํŽ˜์ด์‹ฑ
      letterSpacing: {
        'extra-wide': '0.15em',
      },
    },
  },
};