๐ Tailwind 3์ฅ: ๊ฐ๊ฒฉ๊ณผ ์ฌ์ด์ง ์์คํ
๐ ๊ฐ์
Tailwind ์ 4px ๊ธฐ๋ฐ ๊ฐ๊ฒฉ ์ค์ผ์ผ โ margin, padding, width, height ๋ฅผ ์ผ๊ด๋๊ฒ ๋ค๋ฃจ๋ ๋ฒ
๐ ๋ชฉ์ฐจ
- ๐ ์ด ๋ฌธ์๋ฅผ ์ฝ๊ธฐ ์ ์
- ๐ค ์ ์์์ผ ํ๋๊ฐ
- ๐๏ธ ๋น์ ๋ก ๋จผ์ ์ดํดํ๊ธฐ
- ๐ Tailwind ์ ๊ฐ๊ฒฉ ์ค์ผ์ผ ์์คํ
- ๐ฆ Padding & Margin ์์ ์ ๋ณต
- ๐ Width & Height ์์ ์ ๋ณต
- ๐ป Before / After: ์์๋ค ์ปค๋ฎค๋ํฐ UI
- ๐จ ํํ ์ค์์ ๋ฒ ์คํธ ํ๋ํฐ์ค
- ๐ ์ด๋ฒ์ ๋ฐฐ์ด ๋ด์ฉ ์ด์ ๋ฆฌ
- ๐ ๋ง๋ฌด๋ฆฌ ํด์ฆ
- ๐ฃ ์์ฒ ์ด์ ํด๊ทผ ์ผ๊ธฐ
- ๐ ๋ ์์๋ณด๊ธฐ
๐ ์ด ๋ฌธ์๋ฅผ ์ฝ๊ธฐ ์ ์
โฑ๏ธ ์์ ์ฝ๊ธฐ ์๊ฐ: 15๋ถ (์ ์ฒด) / ํต์ฌ ํํธ๋ง: 8๋ถ
๐ฏ ์ด ๋ฌธ์๋ฅผ ๋ค ์ฝ์ผ๋ฉด ํ ์ ์๋ ๊ฒ
-
p-4,mt-6,w-full,h-screen๊ฐ์ ํด๋์ค๋ฅผ ๋ณด๊ณ ์ฆ์ ํฝ์ ๊ฐ์ ๋จธ๋ฆฟ์์์ ๊ณ์ฐํ ์ ์๋ค - ๋์์ธ ์์คํ ์ ์ผ๊ด๋ ๊ฐ๊ฒฉ ๊ท์น์ Tailwind ๋ก ๊ฐ์ ํ ์ ์๋ค
-
margin: auto๋ฅผ ์ด์ฉํ ๊ฐ์ด๋ฐ ์ ๋ ฌ๋ถํฐmax-w-*๋ฅผ ์ด์ฉํ ์ฝํ ์ธ ๋๋น ์ ํ๊น์ง ๋ค๋ฃฐ ์ ์๋ค
๐บ๏ธ ์ด ๋ฌธ์์ ๋ฐฐ๊ฒฝ ์ธ๊ณ๊ด: '์์๋ค ์ปค๋ฎค๋ํฐ'
- ๐ฃ ์์ฒ (์ ์ ): "์์ ๋์ด ๋์์ธ ํผ๊ทธ๋ง ๋ณด๋ฉด ์ฌ๋ฐฑ์ด '16px', '24px', '32px' ์ด๋ ๊ฒ ๋์ด ์๋๋ฐ, Tailwind ํด๋์ค๋ก ์ด๋ป๊ฒ ๋งคํํ๋ฉด ๋ผ์?"
- ๐ฆ ์ํธ (๋ฆฌ๋): "16px ๋
p-4, 24px ๋p-6, 32px ๋p-8์ด์์. Tailwind ๊ธฐ๋ณธ ๋จ์๊ฐ 4px ๋๊น ์ซ์์ 4 ๊ณฑํ๋ฉด px ๊ฐ์ด ๋์์." - ๐จ ์์ (๋์์ด๋): "์ ๊ฐ ํญ์ 8์ ๋ฐฐ์๋ก ๊ฐ๊ฒฉ ์ก๋ ์ด์ ๊ฐ ์์ด์. Tailwind ์ ๊ถํฉ์ด ๋ฑ์ด์ฃ !"
- ๐ฃ ์์ฒ : "์ค... ๊ทธ๋ฌ๋ฉด ํผ๊ทธ๋ง ์์น รท 4 = Tailwind ์ซ์์ธ ๊ฑฐ๋ค์?"
- ๐ฆ ์ํธ: "์ ํํด์."
๐ค ์ ์์์ผ ํ๋๊ฐ
์์ฒ ์ด๊ฐ ์ฒ์ Tailwind ๋ก UI ๋ฅผ ๋ง๋ค ๋ ์์ฃผ ์ด๋ฐ ์ผ์ด ์๊ฒจ:
{/* ๐ฃ ์์ฒ : "์์ ๋์ด '๋ฒํผ ์ข์ฐ ์ฌ๋ฐฑ 20px๋ก ํด์ฃผ์ธ์'๋ผ๊ณ ํ์
จ๋๋ฐ...
p-5 ๋ 20px์ด๊ณ , px-5 ๋ ์ข์ฐ๋ง 20px์ด๊ณ ...
px-[20px] ๋ก ๋ช
์์ ์ผ๋ก ์จ์ผ ํ๋? */}
<button className="px-[20px]"> {/* ์์๊ฐ์ผ๋ก ๋๋ง */}์ด๋ ๊ฒ ๋งค๋ฒ ์์๊ฐ(px-[20px])์ผ๋ก ๋๋ง์น๋ฉด ๋์์ธ ์ผ๊ด์ฑ์ด ๋ฌด๋์ ธ. ์ปดํฌ๋ํธ๋ง๋ค ์ฌ๋ฐฑ์ด ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๊ณ , ๋์ค์ "์ ์ฒด ์ฌ๋ฐฑ์ ์ข ๋๋ ค์ฃผ์ธ์" ๋ผ๋ ์์ฒญ์ด ์์ ๋ ์์ญ ๊ฐ์ px-[...] ๋ฅผ ํ๋์ฉ ์์ ํด์ผ ํ๋ ์ ์ง๋ณด์ ์ง์ฅ์ ๋น ์ ธ.
Tailwind ์ ๊ฐ๊ฒฉ ์ค์ผ์ผ์ ์์ ํ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค๋ฉด, ์์์ ํผ๊ทธ๋ง ์์น๋ฅผ ์ฆ์ ํด๋์ค๋ก ๋ณํํ ์ ์์ด.
๐๏ธ ๋น์ ๋ก ๋จผ์ ์ดํดํ๊ธฐ
Tailwind ๊ฐ๊ฒฉ ์์คํ ์ '๋๊ธ์' ์ผ.
์ค์์ mm, cm, inch ๊ฐ์ ๋จ์๊ฐ ์๋ฏ์ด, Tailwind ์๋ 1, 2, 3, 4... ๊ฐ์ ์ซ์ ์ค์ผ์ผ์ด ์์ด. ๊ทธ ๋จ์๋ 4px (= 0.25rem) ์ด์ผ.
Tailwind ์ซ์ ร 4 = px ๊ฐ
์) p-4 โ 4 ร 4 = 16px
p-6 โ 6 ร 4 = 24px
p-8 โ 8 ร 4 = 32px
๐ก ํ ์ค๋ก ๊ธฐ์ตํ๊ธฐ
์ซ์ ร 4 = px. ์์ ํผ๊ทธ๋ง์ ์ฌ๋ฐฑ ๊ฐ รท 4 = Tailwind ์ซ์.
๐ Tailwind ์ ๊ฐ๊ฒฉ ์ค์ผ์ผ ์์คํ
์์ฃผ ์ฐ๋ ๊ฐ๊ฒฉ ๊ฐ ๋์กฐํ
| Tailwind ํด๋์ค | rem ๊ฐ | px ๊ฐ | ์ธ์ ์ธ๊น |
|---|---|---|---|
p-1 / m-1 | 0.25rem | 4px | ์์ฃผ ์์ ๋ด๋ถ ์ฌ๋ฐฑ |
p-2 / m-2 | 0.5rem | 8px | ์ํ ์์ ์ฌ๋ฐฑ (๋ฐฐ์ง, ์นฉ) |
p-3 / m-3 | 0.75rem | 12px | ์ค์ํ ๋ฒํผ ์ฌ๋ฐฑ |
p-4 / m-4 | 1rem | 16px | ๊ธฐ๋ณธ ์ฌ๋ฐฑ (๊ฐ์ฅ ์์ฃผ ์) |
p-5 / m-5 | 1.25rem | 20px | ๋ฒํผ/์ ๋ ฅ ํ๋ ์ฌ๋ฐฑ |
p-6 / m-6 | 1.5rem | 24px | ์นด๋ ๋ด๋ถ ์ฌ๋ฐฑ |
p-8 / m-8 | 2rem | 32px | ์น์ ๊ฐ๊ฒฉ |
p-10 / m-10 | 2.5rem | 40px | ๋ํ ์น์ ์ฌ๋ฐฑ |
p-12 / m-12 | 3rem | 48px | ํ์ด๋ก ์์ญ ์ฌ๋ฐฑ |
p-16 / m-16 | 4rem | 64px | ํ์ด์ง ์ต์๋จ ์ฌ๋ฐฑ |
p-24 / m-24 | 6rem | 96px | ๋์ ํ์ด์ง ์น์ |
ํน์ ๊ฐ
/* p-px: 1px ์ ํํ */
.p-px { padding: 1px; }
/* p-0.5: 2px */
.p-0\.5 { padding: 0.125rem; } /* 0.125 ร 16 = 2px */
/* p-1.5: 6px */
.p-1\.5 { padding: 0.375rem; } /* 0.375 ร 16 = 6px */๐ฆ Padding & Margin ์์ ์ ๋ณต
๋ฐฉํฅ ์ ๋ฏธ์ฌ ํจํด
<!-- ์ ์ฒด ๋ฐฉํฅ -->
<div class="p-4"> <!-- padding: 16px (์ฌ๋ฐฉ) -->
<div class="m-4"> <!-- margin: 16px (์ฌ๋ฐฉ) -->
<!-- ๊ฐ๋ก/์ธ๋ก -->
<div class="px-4"> <!-- padding-left + padding-right: 16px -->
<div class="py-4"> <!-- padding-top + padding-bottom: 16px -->
<div class="mx-4"> <!-- margin-left + margin-right: 16px -->
<div class="my-4"> <!-- margin-top + margin-bottom: 16px -->
<!-- ๊ฐ ๋ฐฉํฅ -->
<div class="pt-4"> <!-- padding-top: 16px -->
<div class="pr-4"> <!-- padding-right: 16px -->
<div class="pb-4"> <!-- padding-bottom: 16px -->
<div class="pl-4"> <!-- padding-left: 16px -->
<div class="mt-4"> <!-- margin-top: 16px -->
<div class="mr-4"> <!-- margin-right: 16px -->
<div class="mb-4"> <!-- margin-bottom: 16px -->
<div class="ml-4"> <!-- margin-left: 16px -->
<!-- ์๋ ๋ง์ง (๊ฐ์ด๋ฐ ์ ๋ ฌ!) -->
<div class="mx-auto"> <!-- margin-left: auto; margin-right: auto โ ๊ฐ์ด๋ฐ ์ ๋ ฌ -->๐ฏ mx-auto ์ ๋ง๋ฒ: ์ฝํ
์ธ ๊ฐ์ด๋ฐ ์ ๋ ฌ
// ํ์ด์ง ์ฝํ
์ธ ๋ฅผ ํ๋ฉด ์ค์์ ๋ฐฐ์นํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํจํด
function PageLayout({ children }: { children: React.ReactNode }) {
return (
// max-w-6xl: ์ต๋ ๋๋น ์ ํ (1152px)
// mx-auto: ์ข์ฐ ๋ง์ง auto โ ๊ฐ์ด๋ฐ ์ ๋ ฌ
// px-4: ๋ชจ๋ฐ์ผ์์ ํ๋ฉด ๊ฐ์ฅ์๋ฆฌ ์ฌ๋ฐฑ ํ๋ณด
<main className="mx-auto max-w-6xl px-4 py-8 sm:px-6 lg:px-8">
{children}
</main>
);
}Space Between ์ ํธ๋ฆฌํฐ (์์ ์์ ๊ฐ๊ฒฉ)
<!-- ์์ ์์ ์ฌ์ด์ margin ์๋ ๋ถ์ฌ (gap ๊ณผ ์ ์ฌํ์ง๋ง Flex/Grid ์์ด๋ ๊ฐ๋ฅ) -->
<div class="space-y-4"> <!-- ์์๋ค ์ฌ์ด์ margin-top: 16px -->
<Card />
<Card />
<Card />
</div>
<div class="space-x-4"> <!-- ์์๋ค ์ฌ์ด์ margin-left: 16px -->
<Button />
<Button />
</div>โ ๏ธ ์ฃผ์:
space-y-*๋:not(:last-child)์margin-bottom์ ๋ถ์ฌํด. Flex/Grid ์gap๊ณผ ๋์์ด ๋น์ทํ์ง๋ง, Flex/Grid ์ปจํ ์ด๋ ์์์๋gap์ด ๋ ๋ช ํํด.space-y-*๋ ์ผ๋ฐ ๋ธ๋ก ๋ ์ด์์์ ์ ์ฉํด.
๐ Width & Height ์์ ์ ๋ณต
ํต์ฌ Width ํด๋์ค
<!-- ๊ณ ์ ๋๋น (๊ฐ๊ฒฉ ์ค์ผ์ผ๊ณผ ๋์ผ) -->
<div class="w-4"> <!-- width: 16px -->
<div class="w-8"> <!-- width: 32px -->
<div class="w-16"> <!-- width: 64px -->
<div class="w-32"> <!-- width: 128px -->
<div class="w-64"> <!-- width: 256px -->
<!-- ๋น์จ ๋๋น -->
<div class="w-1/2"> <!-- width: 50% -->
<div class="w-1/3"> <!-- width: 33.333% -->
<div class="w-2/3"> <!-- width: 66.667% -->
<div class="w-3/4"> <!-- width: 75% -->
<div class="w-full"> <!-- width: 100% โ ์์ฃผ ์! -->
<!-- ํน์ ๋๋น -->
<div class="w-auto"> <!-- width: auto -->
<div class="w-screen"> <!-- width: 100vw (๋ทฐํฌํธ ์ ์ฒด) -->
<div class="w-fit"> <!-- width: fit-content -->
<div class="w-max"> <!-- width: max-content -->
<div class="w-min"> <!-- width: min-content -->
<!-- ์ต๋/์ต์ ๋๋น (์ฝํ
์ธ ์ ํ์ ์์ฃผ ์!) -->
<div class="max-w-sm"> <!-- max-width: 24rem (384px) -->
<div class="max-w-md"> <!-- max-width: 28rem (448px) -->
<div class="max-w-lg"> <!-- max-width: 32rem (512px) -->
<div class="max-w-xl"> <!-- max-width: 36rem (576px) -->
<div class="max-w-2xl"> <!-- max-width: 42rem (672px) -->
<div class="max-w-4xl"> <!-- max-width: 56rem (896px) -->
<div class="max-w-6xl"> <!-- max-width: 72rem (1152px) โ ํ์ด์ง ๋๋น์ ์์ฃผ ์ -->
<div class="max-w-none"> <!-- max-width: none (์ ํ ์์) -->ํต์ฌ Height ํด๋์ค
<!-- ๊ณ ์ ๋์ด -->
<div class="h-4"> <!-- height: 16px -->
<div class="h-8"> <!-- height: 32px -->
<div class="h-16"> <!-- height: 64px (๋ด๋น๊ฒ์ด์
๋ฐ ๋์ด์ ๋ฑ) -->
<div class="h-64"> <!-- height: 256px -->
<!-- ๋น์จ ๋์ด -->
<div class="h-1/2"> <!-- height: 50% -->
<div class="h-full"> <!-- height: 100% -->
<div class="h-screen"> <!-- height: 100vh โ ์ ์ฒด ํ๋ฉด ๋์ด -->
<div class="h-svh"> <!-- height: 100svh (๋ชจ๋ฐ์ผ ์ฃผ์์ฐฝ ์ ์ธ) -->
<!-- ์ต์/์ต๋ ๋์ด -->
<div class="min-h-screen"> <!-- min-height: 100vh โ ํ์ด์ง ์ต์ ๋์ด ์ค์ ์ ํ์! -->
<div class="min-h-0"> <!-- min-height: 0 -->
<div class="max-h-96"> <!-- max-height: 24rem -->
<!-- ์ ์ฌ๊ฐํ (w ์ h ๋์) -->
<div class="size-10"> <!-- width: 40px; height: 40px -->
<div class="size-full"> <!-- width: 100%; height: 100% -->๐ป Before / After: ์์๋ค ์ปค๋ฎค๋ํฐ UI
โ ์์งํ ์ฝ๋: ์์๊ฐ ๋จ์ฉ
// ๐ฃ ์์ฒ : "ํผ๊ทธ๋ง ๋ณด๋ฉด์ ๊ทธ๋ฅ px ๊ฐ ๊ทธ๋๋ก ๋๋ ค๋ฃ์์ด์..."
function StudyCard() {
return (
<div style={{ padding: '20px', marginBottom: '16px', maxWidth: '380px' }}>
<div style={{ padding: '4px 12px', marginBottom: '8px' }}>
<span>React</span>
</div>
<h3 style={{ fontSize: '18px', marginBottom: '12px' }}>
React ์คํฐ๋ ๋ชจ์ง
</h3>
<p style={{ marginBottom: '20px', color: '#6b7280' }}>
๋งค์ฃผ ํ ์์ผ ์ค์ 10์
</p>
<button style={{ padding: '10px 20px', width: '100%' }}>
์ฐธ์ฌํ๊ธฐ
</button>
</div>
);
}๋ฌธ์ ์ : ์ธ๋ผ์ธ ์คํ์ผ์ด๋ผ hover, ๋ฐ์ํ, dark: ๋ชจ๋ ๋ถ๊ฐ. ๊ฐ์ด ํฉ์ด์ ธ ์์ด์ ๋์ค์ "์ ์ฒด ์นด๋ ์ฌ๋ฐฑ ์ค์ฌ์ฃผ์ธ์" ์์ฒญ ์ 5๊ณณ์ ์์ ํด์ผ ํด.
โ ํ๋ก ์ฝ๋: Tailwind ๊ฐ๊ฒฉ ์ค์ผ์ผ ํ์ฉ
// ๐ฆ ์ํธ: "ํผ๊ทธ๋ง ์์น๋ฅผ 4๋ก ๋๋๋ฉด Tailwind ์ซ์๊ฐ ๋์์.
// ์์ ๋์ด ์ค๊ณํ 8px ๋ฐฐ์ ์์คํ
๊ณผ ๋ฑ ๋ง์์."
function StudyCard() {
return (
// p-5 = 20px, mb-4 = 16px, max-w-sm = 384px (ํผ๊ทธ๋ง์ 380px์ ๊ทผ์ )
<div className="max-w-sm rounded-xl border border-gray-200 bg-white p-5 shadow-md transition-shadow hover:shadow-lg">
{/* ๋ฐฐ์ง: py-0.5 = 2px, px-3 = 12px, mb-2 = 8px */}
<span className="mb-2 inline-block rounded-full bg-blue-100 px-3 py-0.5 text-xs font-semibold text-blue-700">
React
</span>
{/* ์ ๋ชฉ: mb-3 = 12px */}
<h3 className="mb-3 text-lg font-bold text-gray-900">
React ์คํฐ๋ ๋ชจ์ง
</h3>
{/* ์ค๋ช
: mb-5 = 20px */}
<p className="mb-5 text-sm text-gray-500">
๋งค์ฃผ ํ ์์ผ ์ค์ 10์
</p>
{/* ๋ฒํผ: py-2.5 = 10px, px-5 = 20px, w-full = 100% */}
<button className="w-full rounded-lg bg-blue-600 py-2.5 text-sm font-medium text-white transition-colors hover:bg-blue-700">
์ฐธ์ฌํ๊ธฐ
</button>
</div>
);
}์ด์ : hover ํจ๊ณผ(hover:shadow-lg), ํธ๋์ง์
(transition-shadow) ๋ชจ๋ ํด๋์ค๋ก ํด๊ฒฐ. ๋์ค์ "์ฌ๋ฐฑ ์ ์ฒด ์ค์ฌ์ฃผ์ธ์" โ p-5 ํ๋๋ง p-4 ๋ก ๋ฐ๊พธ๋ฉด ๋.
๐จ ํํ ์ค์์ ๋ฒ ์คํธ ํ๋ํฐ์ค
์ค์ 1: p-* ์ px-*/py-* ํผ์ฉ์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ
{/* โ ์ํ: p-4 ๊ฐ ๋จผ์ ์ ์ฉ๋๊ณ , px-6 ์ด ์ข์ฐ๋ง ๋ฎ์ด์ โ ์๋ ๋ถ๋ช
ํ */}
<div className="p-4 px-6">
{/* โ
๋ช
ํํ ์๋: ์ธ๋ก 16px, ๊ฐ๋ก 24px */}
<div className="px-6 py-4">์ค์ 2: h-full ์ด ์ ๋จนํ ๋
{/* โ ๋ถ๋ชจ ๋์ด๊ฐ ์์ผ๋ฉด h-full ์ ์๋ฏธ ์์ */}
<div>
<div className="h-full bg-blue-100">๋ถ๋ชจ ๋์ด๊ฐ ์์ด์ 0์</div>
</div>
{/* โ
๋ถ๋ชจ์ ๋ช
์์ ๋์ด ์ง์ */}
<div className="h-64">
<div className="h-full bg-blue-100">์ด์ 64px ๋์ด</div>
</div>์ค์ 3: w-full ๊ณผ max-w-* ๊ฐ์ด ์ฐ๊ธฐ
{/* ์ฝํ
์ธ ์์ญ: w-full ๋ก ๊ฐ๋ก ๊ฝ ์ฑ์ฐ๋, max-w-6xl ๋ก ์ต๋ ๋๋น ์ ํ */}
{/* mx-auto ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ โ ์ด ํจํด์ด ํ์ด์ง ๋ ์ด์์์ ํ์ค! */}
<main className="mx-auto w-full max-w-6xl px-4">
{/* ํ์ด์ง ๋ด์ฉ */}
</main>๋ฒ ์คํธ ํ๋ํฐ์ค: ์ค์ผ์ผ ๋ฐ์ ๊ฐ์ ์์๊ฐ์ผ๋ก
{/* ํผ๊ทธ๋ง์์ ๋ฑ ๋ง๋ Tailwind ๊ฐ์ด ์์ ๋: ์์๊ฐ ์ฌ์ฉ */}
<div className="h-[72px]"> {/* h-16=64px, h-20=80px ๋ ๋ค ์ ๋ง์ ๋ */}
<div className="w-[340px]"> {/* ์ ํํ ๋๋น๊ฐ ํ์ํ ๋ */}
<div className="mt-[13px]"> {/* ์์์ด ํผ๊ทธ๋ง์์ ๋ฑ 13px ๋ฅผ ์ง์ ํ์ ๋ */}๐ ์์๊ฐ ์ฌ์ฉ ์์น: ๋์์ธ ์์คํ ํ ํฐ(8px ๋ฐฐ์ ๋ฑ)์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ๋ฉด ์ค์ผ์ผ ๋ด ํด๋์ค๋ฅผ ์ฐ์ . ๋ถ๊ฐํผํ๊ฒ ๋ค๋ฅผ ๋๋ง
[...]์ฌ์ฉ.
๐ ์ด๋ฒ์ ๋ฐฐ์ด ๋ด์ฉ ์ด์ ๋ฆฌ
| ๊ฐ๋ | ํด๋์ค ํจํด | ํต์ฌ |
|---|---|---|
| ๊ธฐ๋ณธ ๋จ์ | ์ซ์ ร 4 = px | p-4 = 16px |
| Padding ๋ฐฉํฅ | p-, px-, py-, pt-, pr-, pb-, pl- | ๋ฐฉํฅ ์ ๋ฏธ์ฌ |
| Margin ๋ฐฉํฅ | m-, mx-, my-, mt-, mr-, mb-, ml- | ๋ฐฉํฅ ์ ๋ฏธ์ฌ |
| ๊ฐ์ด๋ฐ ์ ๋ ฌ | mx-auto | ์ข์ฐ ๋ง์ง ์๋ |
| ๋๋น ์ ํ | max-w-6xl mx-auto | ํ์ด์ง ํ์ค ํจํด |
| ์ ์ฌ๊ฐํ | size-10 | w+h ๋์ |
| ์ ์ฒด ํ๋ฉด | min-h-screen | ํ์ด์ง ์ต์ ๋์ด |
๐ ๋ง๋ฌด๋ฆฌ ํด์ฆ
Q1. ์์์ด ํผ๊ทธ๋ง์์ ์นด๋์ ๋ด๋ถ ์ฌ๋ฐฑ์ "์ข์ฐ 24px, ์ํ 16px" ๋ก ์ง์ ํ๋ค. Tailwind ํด๋์ค๋?
โ
์ ๋ต: px-6 py-4
๐ก ์์ธ ํด์ค:
- ๊ณ์ฐ: 24px รท 4 = 6 โ
px-6. 16px รท 4 = 4 โpy-4. p-6๋ง ์ฐ๋ฉด ์ํ์ข์ฐ ๋ชจ๋ 24px ๊ฐ ๋ผ์ ์ค๋ต.px-6์ ์ข์ฐ,py-4๋ ์ํ๋ฅผ ๊ฐ๊ฐ ์ง์ ํ๋ ๊ฒ ํต์ฌ.- ๐ ํต์ฌ ๊ธฐ์ต๋ฒ: "px = ๊ฐ๋ก(x์ถ), py = ์ธ๋ก(y์ถ). ์ํ ์ขํ๊ณ๋ ๊ฐ์."
Q2. ์์ฒ ์ด๊ฐ ์ฝํ ์ธ ์์ญ์ ํ๋ฉด ์ค์์ ๋ฐฐ์นํ๊ณ , ์ต๋ ๋๋น๋ฅผ 1152px ๋ก ์ ํํ๊ณ ์ถ๋ค. ์ฌ๋ฐ๋ฅธ ํจํด์?
โ
์ ๋ต: mx-auto max-w-6xl px-4
๐ก ์์ธ ํด์ค:
mx-auto: ์ข์ฐ ๋ง์ง์ ์๋์ผ๋ก ์ค์ ํด์ ๊ฐ์ด๋ฐ ์ ๋ ฌ.max-w-6xl: ์ต๋ ๋๋น๋ฅผ 72rem(1152px)์ผ๋ก ์ ํ. ํ๋ฉด์ด ์ด๋ณด๋ค ๋์ด๋ ๋ ๋์ด๋์ง ์์.px-4: ๋ชจ๋ฐ์ผ์์ ํ๋ฉด ๊ฐ์ฅ์๋ฆฌ์ ์ต์ ์ฌ๋ฐฑ(16px) ํ๋ณด.- ์ด ์ธ ํด๋์ค ์กฐํฉ์ด Next.js/React ์ฑ์์ ํ์ด์ง ์ฝํ ์ธ ์์ญ์ ์ฐ๋ ํ์ค ํจํด์ด์ผ.
- ๐ ํต์ฌ ๊ธฐ์ต๋ฒ: "์ ํ(max-w) + ์ ๋ ฌ(mx-auto) + ๊ฐ์ฅ์๋ฆฌ ์ฌ๋ฐฑ(px) = ์๋ฒฝํ ํ์ด์ง ๋ ์ด์์"
Q3. h-full ์ ์คฌ๋๋ฐ ๋์ด๊ฐ 0 ์ผ๋ก ๋์จ๋ค. ์์ธ๊ณผ ํด๊ฒฐ์ฑ
์?
โ
์ ๋ต: ๋ถ๋ชจ ์์์ ๋ช
์์ ๋์ด๊ฐ ์๊ธฐ ๋๋ฌธ. ๋ถ๋ชจ์ h-64, h-screen ๋ฑ ๋์ด๋ฅผ ์ง์ ํด์ผ h-full ์ด ํจ๊ณผ๋ฅผ ๋ฐํํ๋ค.
๐ก ์์ธ ํด์ค:
h-full์height: 100%์ผ. ํผ์ผํธ ๊ฐ์ ๋ถ๋ชจ์ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํด. ๋ถ๋ชจ ๋์ด๊ฐ ์์ผ๋ฉด 0% = 0px ์ด ๋์ด๋ฒ๋ ค.- ํด๊ฒฐ 1: ๋ถ๋ชจ์
h-64,h-screen๊ฐ์ ๊ณ ์ ๋์ด ์ง์ . - ํด๊ฒฐ 2: ๋ถ๋ชจ์
min-h-screen์ผ๋ก ์ต์ ๋์ด ์ง์ . - ํด๊ฒฐ 3: Flex ์ปจํ
์ด๋ ์์์
flex-1๋ก ๋๋จธ์ง ๊ณต๊ฐ ์ฑ์ฐ๊ธฐ. - ๐ ํต์ฌ ๊ธฐ์ต๋ฒ: "
h-full์ด ์ ๋๋ฉด ๋ถ๋ชจ ๋์ด ๋จผ์ ํ์ธ."
๐ฃ ์์ฒ ์ด์ ํด๊ทผ ์ผ๊ธฐ
"์ซ์ ร 4 = px" ์ด ๊ณต์ ํ๋๊ฐ ์ค๋์ ํต์ฌ์ด์๋ค. ์์ ๋ ํผ๊ทธ๋ง ์ด์ด์ ์ฌ๋ฐฑ ์์น ๋ณด๋ฉด ์ด์ ๋ฐ๋ก Tailwind ํด๋์ค๊ฐ ๋ ์ค๋ฅธ๋ค. 24px โ p-6, 32px โ p-8, ์ด๋ ๊ฒ.
๊ทธ๋ฆฌ๊ณ mx-auto max-w-6xl px-4 ๊ฐ ํ์ด์ง ๋ ์ด์์ ํ์ค ํจํด์ด๋ผ๋ ๊ฒ๋ ์๊ฒ ๋๋ค. ์์ผ๋ก ์ ํ์ด์ง ๋ง๋ค ๋๋ง๋ค ์ด ํจํด ์ฐ๋ฉด ๋๊ฒ ๋ค.
๐ก ์ค๋์ ๊ตํ: "์์๊ฐ(
px-[20px])์ ๋ํผ์ฒ๊ฐ ์๋๋ผ ๋ง์ง๋ง ์๋จ์ด๋ค. ๋จผ์ ์ค์ผ์ผ ์์์ ์ฐพ์๋ณด์."
์ค๋ ์ ๋ ์ ์์๋ค ์ปค๋ฎค๋ํฐ ์นด๋ ์ปดํฌ๋ํธ ๊ฐ๊ฒฉ ์ ๋ถ Tailwind ์ค์ผ์ผ๋ก ํต์ผํด๋ด์ผ๊ฒ ๋ค. ํํ์ค ํผ์ ์์ผ๋๊ณ ์์ ํ๋ฉด ๋ฑ์ด๊ฒ ๋๊ฑธ? ๐