๋ชจ๋ฐ์ผ ์ฐ์ ์ ๋ต์ ์ฌ์ฉํ์ฌ Tailwind CSS๋ก ๋ฐ์ํ ์น ๋์์ธ์ ๋ง์คํฐํ์ธ์. ์ ์ํ ๋ ์ด์์ ์ ์์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก, ๊ธฐ์ ๋ฐ ์์ ๋ฅผ ๋ฐฐ์ฐ์ญ์์ค.
Tailwind CSS ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์
์ค๋๋ ์ ๋์งํธ ํ๊ฒฝ์์ ๋ชจ๋ฐ์ผ ์ฅ์น๊ฐ ์ธํฐ๋ท ์ฌ์ฉ์ ์ง๋ฐฐํ๋ ์ํฉ์์ ๋ฐ์ํ ์น์ฌ์ดํธ๋ ๋ ์ด์ ์ฌ์น๊ฐ ์๋๋ผ ํ์ํ์ ๋๋ค. ์ ํธ๋ฆฌํฐ ์ฐ์ CSS ํ๋ ์์ํฌ์ธ Tailwind CSS๋ ๋ฐ์ํ ๋์์ธ์ ๊ตฌ์ถํ๋ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ Tailwind CSS๋ฅผ ์ฌ์ฉํ ๋ฐ์ํ ๋์์ธ์ ๋ํ ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ดํด๋ณด๊ณ ๋ชจ๋ ํ๋ฉด ํฌ๊ธฐ์์ ๋ฉ์ง๊ฒ ๋ณด์ด๋ ์ ์ํ ๋ ์ด์์์ ๋ง๋ค๊ธฐ ์ํ ์ค์ ์์ ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ฐ์ผ ์ฐ์ ๊ฐ๋ฐ ์ดํด
์น ๊ฐ๋ฐ์ ๋ํ ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ๋ชจ๋ฐ์ผ ์ฅ์น์ฉ ์น์ฌ์ดํธ์ ๋์์ธ ๋ฐ ๊ฐ๋ฐ์ ์ฐ์ ์ํ๊ณ ๋ ํฐ ํ๋ฉด์ ๋ํ ๊ฒฝํ์ ์ ์ง์ ์ผ๋ก ํฅ์์ํต๋๋ค. ์ด ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ํฅ์๋ ์ฑ๋ฅ: ๋ ์์ ํ๋ฉด๋ถํฐ ์์ํ๋ฉด ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ์ฅ์น์์ ์ฑ๋ฅ์ ์์ฐ์ค๋ฝ๊ฒ ์ต์ ํํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ชจ๋ฐ์ผ ์ฌ์ฉ์๋ฅผ ์ํ ํต์ฌ ์ฝํ ์ธ ์ ๊ธฐ๋ฅ์ ์ง์คํ๋ฉด ๊ฐ์ํ๋๊ณ ์ง๊ด์ ์ธ ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- ๋ฏธ๋ ๋ณด์ฅ: ๋ชจ๋ฐ์ผ ์ฌ์ฉ์ด ๊ณ์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์น์ฌ์ดํธ๊ฐ ๊ด๋ จ์ฑ์ด ์๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ ์งํฉ๋๋ค.
Tailwind CSS์ ๋ฐ์์ฑ
Tailwind CSS๋ ๋ฐ์ํ ๋์์ธ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํ๋ ์ผ๋ จ์ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋ ์์ํฌ๋ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํ ์ ์๋๋ก ํ๋ ์ค๋จ์ ์์คํ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ค๋จ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
sm
: 640px ์ด์(์์ ํ๋ฉด)md
: 768px ์ด์(์ค๊ฐ ํ๋ฉด)lg
: 1024px ์ด์(ํฐ ํ๋ฉด)xl
: 1280px ์ด์(๋งค์ฐ ํฐ ํ๋ฉด)2xl
: 1536px ์ด์(2๋ฐฐ ๋งค์ฐ ํฐ ํ๋ฉด)
ํน์ ์ค๋จ์ ์์ ์คํ์ผ์ ์ ์ฉํ๋ ค๋ฉด ์ ํธ๋ฆฌํฐ ํด๋์ค ์์ ์ค๋จ์ ์ฝ์ด๋ฅผ ๋ถ์
๋๋ค. ์๋ฅผ ๋ค์ด md:text-lg
๋ ์ค๊ฐ ํ๋ฉด ์ด์์์๋ง text-lg
ํด๋์ค(ํฐ ํ
์คํธ ํฌ๊ธฐ)๋ฅผ ์ ์ฉํฉ๋๋ค.
Tailwind CSS๋ก ๋ชจ๋ฐ์ผ ์ฐ์ ๋์์ธ ๊ตฌํ: ์ค์ ์์
Tailwind CSS๋ก ๋ชจ๋ฐ์ผ ์ฐ์ ๋์์ธ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์ค์ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ 1: ๊ธฐ๋ณธ ๋ ์ด์์
ํค๋, ์ฃผ์ ์ฝํ ์ธ ์์ญ ๋ฐ ๋ฐ๋ฅ๊ธ์ด ์๋ ๊ฐ๋จํ ๋ ์ด์์์ ๊ณ ๋ คํ์ญ์์ค. ๋ชจ๋ฐ์ผ์์๋ ์ด๋ฌํ ์์๊ฐ ์ธ๋ก๋ก ์์ด๋๋ก ํ๊ณ ์ถ์ต๋๋ค. ๋ ํฐ ํ๋ฉด์์๋ ์ฃผ์ ์ฝํ ์ธ ์์ญ์ ๋ ๊ฐ์ ์ด๋ก ๋๋๊ณ ์ถ์ต๋๋ค.
<div class="container mx-auto px-4"
<header class="py-4 text-center"
<h1 class="text-2xl font-bold">My Responsive Website</h1
</header
<main class="md:flex md:space-x-4"
<div class="md:w-1/3"
<h2>Sidebar</h2
<p>This is the sidebar content.</p
</div
<div class="md:w-2/3"
<h2>Main Content</h2
<p>This is the main content area.</p
</div
</main
<footer class="py-4 text-center"
<p>© 2023 My Website</p
</footer
</div
์ด ์์์:
container mx-auto px-4
๋ ๊ฐ๋ก ํจ๋ฉ์ด ์๋ ์ค์ ์ง์ค์ ์ปจํ ์ด๋๋ฅผ ์ ๊ณตํฉ๋๋ค.md:flex
๋ ์ค๊ฐ ํ๋ฉด ์ด์์์ Flexbox ๋ ์ด์์์ ํ์ฑํํฉ๋๋ค.md:space-x-4
๋ ์ค๊ฐ ํ๋ฉด ์ด์์์ ์ด ์ฌ์ด์ ๊ฐ๋ก ๊ฐ๊ฒฉ์ ์ถ๊ฐํฉ๋๋ค.md:w-1/3
๋ฐmd:w-2/3
๋ ์ค๊ฐ ํ๋ฉด ์ด์์์ ์ฌ์ด๋๋ฐ์ ์ฃผ์ ์ฝํ ์ธ ์์ญ์ ๋๋น๋ฅผ ์ค์ ํฉ๋๋ค.
๋ชจ๋ฐ์ผ ์ฅ์น์์๋ Flexbox๊ฐ ์ค๊ฐ ํ๋ฉด ์ด์์์๋ง ํ์ฑํ๋๋ฏ๋ก ์ฌ์ด๋๋ฐ์ ์ฃผ์ ์ฝํ ์ธ ์์ญ์ด ์ธ๋ก๋ก ์์ ๋๋ค. ๊ธฐ๋ณธ ์คํ์ผ(์ค๋จ์ ์ ๋์ฌ ์์)์ ๋ชจ๋ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ฉ๋์ด ๋ชจ๋ฐ์ผ ์ฐ์ ๊ธฐ์ค์ ์ญํ ์ ํฉ๋๋ค.
์์ 2: ํ์ ๋ฉ๋ด
๋ฐ์ํ ๋์์ธ์ ์ผ๋ฐ์ ์ธ ๊ณผ์ ๋ ํ์ ๋ฉ๋ด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ฐ์ผ์์๋ ๋ฉ๋ด๋ฅผ ํ๋ฒ๊ฑฐ ์์ด์ฝ์ผ๋ก ์ถ์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ ํฐ ํ๋ฉด์์๋ ๋ฉ๋ด ํญ๋ชฉ์ ๊ฐ๋ก๋ก ํ์ํ ์ ์์ต๋๋ค.
<nav class="bg-gray-100 py-4"
<div class="container mx-auto px-4 flex items-center justify-between"
<div class="text-xl font-bold">My Brand</div
<div class="md:hidden">
<button class="focus:outline-none">
<svg class="h-6 w-6 fill-current" viewBox="0 0 24 24"
<path fill-rule="evenodd" d="M4 5h16a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1zm0 6h16a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2a1 1 0 011-1zm0 6h16a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2a1 1 0 011-1z" clip-rule="evenodd" /
</svg
</button
</div
<div class="hidden md:flex space-x-4"
<a href="#" class="hover:text-blue-500">Home</a
<a href="#" class="hover:text-blue-500">About</a
<a href="#" class="hover:text-blue-500">Services</a
<a href="#" class="hover:text-blue-500">Contact</a
</div
</div
</nav
์ด ์์์:
md:hidden
์ ์ค๊ฐ ํ๋ฉด ์ด์์์ ํ๋ฒ๊ฑฐ ์์ด์ฝ์ ์จ๊น๋๋ค.hidden md:flex
๋ ๋ชจ๋ฐ์ผ์์ ํ์ ๋งํฌ๋ฅผ ์จ๊ธฐ๊ณ ์ค๊ฐ ํ๋ฉด ์ด์์์ Flexbox ์ปจํ ์ด๋๋ก ํ์ํฉ๋๋ค.space-x-4
๋ ํ์ ๋งํฌ ์ฌ์ด์ ๊ฐ๋ก ๊ฐ๊ฒฉ์ ์ถ๊ฐํฉ๋๋ค.
์ด ์์ ์์๋ Tailwind CSS๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ฐ์ํ ํ์ ๋ฉ๋ด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฒ๊ฑฐ ์์ด์ฝ์ ํด๋ฆญํ ๋ ๋ฉ๋ด ํญ๋ชฉ์ ๊ฐ์์ฑ์ ์ ํํ ์ ์์ต๋๋ค.
์์ 3: ๋ฐ์ํ ์ด๋ฏธ์ง
์๋ก ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ์ ๋ง๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ์ฑ๋ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. Tailwind CSS๋ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์ง์ ์ฒ๋ฆฌํ์ง ์์ง๋ง Tailwind์ ์ ํธ๋ฆฌํฐ ํด๋์ค์ ํจ๊ป <picture>
์์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
<picture
<source media="(min-width: 1024px)" srcset="image-lg.jpg"
<source media="(min-width: 640px)" srcset="image-md.jpg"
<img src="image-sm.jpg" alt="Responsive Image" class="w-full"
</picture
์ด ์์์:
<picture>
์์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง ์์ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.<source>
์์๋ ์๋ก ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ์ ๋ํ ์ด๋ฏธ์ง ์์ค๋ฅผ ์ ์ํฉ๋๋ค.<img>
์์๋<picture>
์์๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๋์ฒด ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.w-full
์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ํ์ผ๋ก ๋ง๋ค๊ณ ์ปจํ ์ด๋์ ์ ์ฒด ๋๋น๋ฅผ ์ฐจ์งํฉ๋๋ค.
๋ณด๋ค ๊ณ ๊ธ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์ํด Cloudinary ๋๋ Imgix์ ๊ฐ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฌํ ์๋น์ค๋ ์๋ก ๋ค๋ฅธ ์ฅ์น์ ๋ง๊ฒ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์๋์ผ๋ก ์กฐ์ ํ๊ณ ์ต์ ํํ ์ ์์ต๋๋ค.
Tailwind CSS๋ฅผ ์ฌ์ฉํ ๋ชจ๋ฐ์ผ ์ฐ์ ๊ฐ๋ฐ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก
Tailwind CSS๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ์ฐ์ ๋์์ธ์ ๊ตฌํํ ๋ ์ผ๋์ ๋์ด์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ฐ์ผ ๋ณด๊ธฐ๋ถํฐ ์์: ํญ์ ๊ฐ์ฅ ์์ ํ๋ฉด์ฉ์ผ๋ก ๋์์ธํ๊ณ ๊ฐ๋ฐํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝํ ์ธ ์ ๊ธฐ๋ฅ์ ์ฐ์ ์์๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
- ์ค๋จ์ ์ ๋์ฌ๋ฅผ ์ ๋ต์ ์ผ๋ก ์ฌ์ฉ: ๋ ํฐ ํ๋ฉด์ ๋ํ ๊ธฐ๋ณธ ์คํ์ผ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ง ์ค๋จ์ ์ ๋์ฌ๋ฅผ ์ ์ฉํ์ญ์์ค. ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
- ์ค์ ์ฅ์น์์ ํ ์คํธ: ์๋ฎฌ๋ ์ดํฐ์ ์๋ฎฌ๋ ์ดํฐ๋ ์ ์ฉํ์ง๋ง ์น์ฌ์ดํธ๊ฐ ์์๋๋ก ๋ณด์ด๊ณ ์๋ํ๋์ง ํ์ธํ๋ ค๋ฉด ์ค์ ๋ชจ๋ฐ์ผ ์ฅ์น์์ ํ ์คํธํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ฅ์น ํ๋ฉด ํฌ๊ธฐ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์๋ฎฌ๋ ์ดํธํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์๋ก ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ์ ๋ง๊ฒ ์ ์ ํ ํฌ๊ธฐ์ ์ต์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ์ ๊ทผ์ฑ ๊ณ ๋ ค: ์น์ฌ์ดํธ๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ์ญ์์ค. ์๋ฏธ๋ก ์ HTML์ ์ฌ์ฉํ๊ณ , ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ๊ณ , ์ถฉ๋ถํ ์์ ๋๋น๋ฅผ ๋ณด์ฅํ์ญ์์ค. Axe ๋๋ WAVE์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ํ ์คํธํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ผ๊ด๋ ๊ทธ๋ฆฌ๋ ์์คํ ์ฌ์ฉ: Tailwind CSS๋ ์ผ๊ด๋๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๋ ์ด์์์ ๋ง๋ค ์ ์๋ ์ ์ฐํ ๊ทธ๋ฆฌ๋ ์์คํ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํ์ฉํ์ญ์์ค. ๊ธฐ๋ณธ ๊ทธ๋ฆฌ๋๋ 12์ด ๋ ์ด์์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค.
- Tailwind์ ์ ํธ๋ฆฌํฐ ํด๋์ค ํ์ฉ: Tailwind์ ์ ํธ๋ฆฌํฐ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ์ํ ํ๋กํ ํ์ ์ ์ ๋ฐ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํธ๋ฆฌํฐ ํด๋์ค์ ์ต์ํด์ง๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์ ์คํ์ผ์ ์ง์ ํ์ญ์์ค.
- ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ ์์ ๋ง๋ค๊ธฐ: Tailwind๋ ๊ด๋ฒ์ํ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ์ ๊ณตํ์ง๋ง ํน์ ๋์์ธ ์๊ตฌ ์ฌํญ์ ๋ํ ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค์ด์ผ ํ ์ ์์ต๋๋ค. Tailwind์ ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ ์คํ์ผ๊ณผ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํ์ญ์์ค.
- CSS ์ ์ฒ๋ฆฌ๊ธฐ ์ฌ์ฉ: Tailwind CSS๋ ์์ฒด์ ์ผ๋ก ๊ฐ๋ ฅํ์ง๋ง Sass ๋๋ Less์ ๊ฐ์ CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฌํ๋ก๋ฅผ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์, ๋ฏน์ค์ธ ๋ฐ ๊ธฐํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ณด๋ค ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ CSS๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: Google PageSpeed Insights ๋๋ WebPageTest์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ญ์์ค. ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ์ญ์์ค.
- ๊ต์ฐจ ๋ธ๋ผ์ฐ์ ํธํ์ฑ: ๊ต์ฐจ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ์ญ์์ค. BrowserStack ๋๋ LambdaTest์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น์์ ํ ์คํธํ์ญ์์ค.
- ๊ตญ์ ํ(i18n) ๋ฐ ํ์งํ(l10n) ๊ณ ๋ ค: ์น์ฌ์ดํธ๊ฐ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฒฝ์ฐ i18n ๋ฐ l10n์ ์๋ฏธ๋ฅผ ๊ณ ๋ คํ์ญ์์ค. ์ ์ ํ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๊ณ , ์ฝํ ์ธ ์ ๋ํ ๋ฒ์ญ์ ์ ๊ณตํ๊ณ , ๋ค์ํ ์ธ์ด์ ๋ฌธํ์ ๋ง๊ฒ ๋์์ธ์ ์กฐ์ ํ์ญ์์ค. ์๋ฅผ ๋ค์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋ ์ธ์ด๋ ๋ ์ด์์์ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ๊ธฐ์
๊ธฐ๋ณธ ์ฌํญ ์ธ์๋ Tailwind CSS๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ์ฐ์ ๊ฐ๋ฐ์ ํฅ์์ํค๋ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ์ ์ด ์์ต๋๋ค.
CSS ๋ณ์(์ฌ์ฉ์ ์ ์ ์์ฑ) ์ฌ์ฉ
CSS ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ์ํธ ์ ์ฒด์์ ์ฌ์ฉํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์์, ๊ธ๊ผด ๋ฐ ๊ธฐํ ๋์์ธ ์์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค.
:root {
--primary-color: #007bff;
--secondary-color: #6c757d;
}
.button {
background-color: var(--primary-color);
color: white;
}
Tailwind CSS ๊ตฌ์ฑ ํ์ผ์์ CSS ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ์คํ์ผ์ ํ์ฅํ ์๋ ์์ต๋๋ค.
@apply
์ง์๋ฌธ ์ฌ์ฉ
@apply
์ง์๋ฌธ์ ์ฌ์ฉํ๋ฉด ์์ ์ CSS ๊ท์น์์ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ์ถ์ถํ๊ณ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
.btn {
@apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
}
๊ทธ๋ฌ๋ @apply
๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด CSS๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์์ง ์ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํ์ญ์์ค.
๋์ ๋์์ ์ํ JavaScript ์ฌ์ฉ
Tailwind CSS๋ ์คํ์ผ ์ง์ ์ ์ฒ๋ฆฌํ์ง๋ง JavaScript๋ ์น์ฌ์ดํธ์ ๋์ ๋์์ ์ถ๊ฐํ๋ ๋ฐ ํ์์ ์ ๋๋ค. JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ํธ ์์ฉ, ์ ๋๋ฉ์ด์ ๋ฐ ๊ธฐํ ๋์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ์ญ์์ค.
์๋ฅผ ๋ค์ด JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฒ๊ฑฐ ์์ด์ฝ์ ํด๋ฆญํ ๋ ํ์ ๋ฉ๋ด์ ๊ฐ์์ฑ์ ์ ํํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
๋ฐ์ํ ๋์์ธ์ ๋ํ ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ๋ชจ๋ ์ฅ์น์์ ํ๋ฅญํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. Tailwind CSS๋ ์ ํธ๋ฆฌํฐ ํด๋์ค์ ์ค๋จ์ ์์คํ ์ ์ฌ์ฉํ์ฌ ๋ฐ์ํ ๋์์ธ์ ๊ตฌํํ๋ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธฐ์ฌ์ ์์ฝ๋ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๊ธฐ์ ์ ๋ฐ๋ฅด๋ฉด ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ ๋ฏธ๋์ ๋๋นํ ์ ์๋ ์ ์ํ ๋ ์ด์์์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ชจ๋ฐ์ผ ์ฐ์ ์ฒ ํ์ ์ฑํํ๊ณ Tailwind์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉฐ ๋์์ธ์ ์ง์์ ์ผ๋ก ํ ์คํธํ๊ณ ์ต์ ํํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ํ์ํ ๊ฒฝํ์ ์ ๊ณตํ์ญ์์ค. ์ ๊ทผ์ฑ, ๊ตญ์ ํ ๋ฐ ๊ต์ฐจ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์ ๋ค์ํ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.