๐TL; DR
- ์๋๋ styled-components๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ๋์์ธ์์คํ ๊ตฌ์ถ์ ํ๋ฉฐ styled-components์ ํ๊ณ๋ฅผ ๋๊ผ๋ค.
- tailwind CSS๋ฅผ ๋์ ํ๋ค.
- ์์ง์ ํผ๋์ค๋ฝ๋ค.. tailwind CSS๋ฅผ '์ ์ฐ๋' ๋ฐฉ๋ฒ์ ๋ชจ์์ค์ด๋ค
styled-components๋ฅผ ์ฌ์ฉํ๋ ์ด์
์คํ์ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ '์ปดํฌ๋ํธํ'์ ์์๋ค.
์ปดํฌ๋ํธํํ๋ ๊ฑธ ์ข์ํ๊ธฐ๋ ํ๊ณ , ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ช ์ํ๋ฉด์ ๋ช ํํ ํด๋น ํ๊ทธ์ ์ญํ ์ด ๋๋ฌ๋๋ค๋ ์ ๋ ์ข์๋ค.
์ด ์ ์ ๋ฒ๊ทธ ํฝ์ฑ์๋ ๊ต์ฅํ ๊ฐํธํจ์ ๋๋ผ๊ฒ ํด์คฌ๋ค. (๋ฌธ์ ์ ์์ธ์ ์ฐพ๋ ๋ถ๋ถ์์ ๋ช ์์ฑ์ ์ฅ์ )
๊ทธ๋ฆฌ๊ณ props๋ก ์กฐ๊ฑด๋ถ ์คํ์ผ๋ง์ ์ฅ์ ๋ ๋งค์ฐ ์ข์๋ค.
๋ฐ๋ณต๋๋ ์ปดํฌ๋ํธ์์ ์๊น๋ง ๋ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ง์ด ๋ดค๊ณ , ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ์ค์ผ ์ ์์๋ค.
์์ ์ด์ ๋ก ์คํ์ผ๋ง์ styled-components ๋ก ์ฌ์ฉํ์๋ค.
์ด์ ๊น์ง ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ถํธํ ์ ์ด ์์๋๋ฐ, ์ด๋ฒ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ถํธํ ์ ์ ๋๋ฌด ๋๊ปด๋ฒ๋ ธ๋ค,,
styled-components์ ํ๊ณ
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋๊ผ๋ styled-components์ ์์ฌ์ด ์ ์ ๋ฐ๋ก ๋์์ธ ์์คํ ์ ๋ง๋๋ ๋ฐ ์์๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ ์ข ๋ ์ฒด๊ณ์ ์ผ๋ก ์งํํด๋ณด๊ณ ์ถ์๋ ๋ง์์ด ์์ด์ ํผ์ ๋์์ธ ์์คํ ๊ณผ ํ์ดํฌ๊ทธ๋ํผ ์์คํ ์ ์ฐพ์์ ์ ์ฉํด๋ณด๋ คํ์๋ค.
ํ์ง๋ง, styled-components์ ํํ๋ก ๋ํ๋ด๋ ค๊ณ ํ๋ค๋ณด๋ ํ์ดํฌ๊ทธ๋ํผ์๋ styled-components์ ํํ๊ฐ ๋๋ฌด ๋ฌด๊ฒ๊ฒ ๋๊ปด์ก๋ค.
์ด ์ฌ์ง์ฒ๋ผ font-size๊ฐ ์ด์ง ๋ค๋ฅด๊ฑฐ๋, ๋ค ๋๊ฐ์๋ฐ font-weight๋ง ๋ฐ๋๊ฑฐ๋ ํ๋๋ฐ ์ปดํฌ๋ํธ์ ํ์์ผ๋ก ์ ์ธํ๋ค๋ณด๋ ๋นํจ์จ์ ์ด๋ผ๊ณ ๋๊ปด์ก๋ค.
๋ํ, ์ฌ์ฉํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์๋ค.
<PageWrap>
<button><Body3Medium>๋ก๊ทธ์ธ</Body3Medium></button>
</PageWrap>
์์ ์ฝ๋์ฒ๋ผ ๋จ์ง ํ์ดํฌ๊ทธ๋ํผ ์ค์ ์ ํด์ฃผ๊ณ ์ถ์์ ๋ฟ์ด์๋๋ฐ ํ๊ทธ๋ก ๊ฐ์ธ์ผํ๋ ์ํฉ์ ๋ฐ๋ณตํ๋ฉด์ '์ด๊ฒ ์๋๋ฐ..', '์ด ๋ฐฉ๋ฒ๋ฐ์๋ ์๋๊ฑด๊ฐ' ํ๋ฉด์ ์๋ฌธ์ด ๊ฐ๋ํ ์ํฉ์ด์๋ค.
๊ทธ๋์ ๋ง์ ๊ณ ๋ฏผ๋์ ์คํ์ผ๋ง์ ์ ๋ฉด ๊ต์ฒดํ๊ธฐ๋ก ๋ง์ ๋จน์๋ค.
tailwind CSS์ ๋์
https://fe-developers.kakaoent.com/2022/221013-tailwind-and-design-system/
https://fe-developers.kakaoent.com/2022/220303-tailwind-tips/
์คํ์ผ๋ง์ ๋ฐ๊พธ๊ธฐ๋ก ๊ฒฐ์ฌํ๊ณ ๋์ ํ๋ณด๋ emotion๊ณผ tailwind CSS์๋ค.
์์ ๋งํฌ์ ๊ธ์ ์ง์ง ํ 5๋ฒ์ฉ์ ์ฝ์ด๋ณธ ๊ฒ ๊ฐ๋ค.
๊ฒฐ๋ก ์ ๋จผ์ ๋งํ์๋ฉด,
tailwind๊ฐ ๊ฐ๋ ฅํ๊ฒ ๋ฐ์ด๋ถ์ด๋ 'utility'์ ์ฅ์ ์ ํฌ๊ฒ ๋ดค๋ค.
๊ทธ๋ฆฌ๊ณ , tailwind.config.js์์ ์๋ ์ฝ๋์ฒ๋ผ ์คํ์ผ๋ง์ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ ๊ฒ์ ๋ณด๊ณ ๋์์ธ์์คํ ์ ๋์ ํ๊ธฐ์ ๊ต์ฅํ ์ ํฉํ๊ฒ ๋ค!๋ผ๋ ์๊ฐ์ ํ๋ค.
์ง๊ธ๊น์ง์ ์ํฉ
- ๋จ์๊ตฌํ์ ๊ต์ฅํ ์ด์ ์ด ์๋ค.
์ฌ์ค tailwind๊ฐ ๋ฌ๋์ปค๋ธ๊ฐ ์๋ค๊ณ ๋ค์๋๋ฐ, ๊ฐ์ธ์ ์ผ๋ก๋ ๋ณด๊ธฐ๋งํ์ ๋๋ ๋ง๋งํ๋ ๊ฒ ์ปธ๋๋ฐ ๋ง์ ๋ช๋ฒ ํด๋ณด๋๊น ๊ธ๋ฐฉ ์ ์ํ ์ ์์๋ค. ์ธ๋ผ์ธ ์คํ์ผ๋ง ํ๋ฏ์ด ํ๋ ๋๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๊ทผ๋ฐ, ๋จ์ css๋์ ์ฐ๋ ๋ค์ด๋ฐ์ด ๋ฌ๋ผ์ ๊ฐ๋ ์ฑ์ด ๊ทธ๋ ๊ฒ ์ข๋ค๊ณ ๋๋ผ์ง ๋ชปํ๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์ ์ด์ฌํ ์ฐ๊ณ ํ 3๊ฐ์๋ง ์ง๋๊ณ ๋ค์ ์ ์ง๋ณด์ํ๋ผ๊ณ ํ๋ฉด ๋ค์ ๋ฒ๋ฒ ์ผ ๊ฒ ๊ฐ์ ๊ธฐ๋ถ์ด ๋ ๋ค.
- tailwind CSS๋ component-driven ๊ฐ๋ฐ์ ํ์ง ๋ชปํ๋ค.
์ด ์ ์ ์ง๊ธ๊น์ง ๋ด๊ฐ ๋๋ผ๋ tailwind์ ์ต๋ ๋จ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ฒ์์๋ ๋ด๊ฐ tailwind๋ฅผ ์์ง ์ด์ง ๋ช ์ผ ๋ฐ์ ์๋์ผ๋ ์ ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ์๋ผ๊ณ ์๊ฐํ๋ค. ์ฌ์ค ๋ง๋ค
๊ธ๋ค์ ๋ง์ด ์ฐพ์๋ณด๋ twin Macro๋ฅผ ๊ฐ์ด ์ฌ์ฉํด์ ๋จ์ ์ ๋ณด์ํ ์ผ์ด์ค๋ ์์๋๋ฐ, ๊ทธ๋ฌ์ง ์์ผ๋ ค๊ณ ์คํ์ผ๋ง ๋ฐฉ์์ ๋ฐ๊ฟจ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ ๋ ์ฌ์ฉํ๊ฒ ๋ง๋๋ ๊ฒ ๊ณผ์ฐ ์ข์ ๋ฐฉ์์ธ๊ฐ์ ๋ํ ์๋ฌธ์ด ๋ค์ด ์ด ๋ฐฉ๋ฒ์ ์์ง ๋ณด๋ฅ์ค์ด๋ค.
์๋ ์ฌ์ง์ ๋ณด๋ฉด, ๋ด๊ฐ ์ด ์ฝ๋๋ค.
๋๋ ์ด๋ ๊ฒ tailwind๋ฅผ ์ฐ๋ฉด์ ์ง์ง ์๋ฐฑ๋ฒ๋ ๋ '์ด๊ฒ ๋ง๋?'๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋์ ์์ฆ์๋ tailwind์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ํด์ ์ฐ๊ตฌ์ค์ด๋ค.
๋ถ๋ช ๋ชจ๋ ์คํ์ผ๋ง์ ๋ฐฉ์์ ์ฅ๋จ์ ์ด ์์๊ฑฐ๊ณ , ๋ด๊ฐ ์ ์ฐ๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชจ๋ฅด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐ๋๋ค. ๊ทผ๋ฐ ๋ง์ ์๋ฃ๋ฅผ ์ฐพ์๋ดค๋๋ฐ ๋ง๋ ํ๊ฒ ์์๋ค.
๊ทธ๋ฌ๋ค๊ฐ ๋ค๋ฅธ ์ฌ๋๋ค์ด tailwind๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํด์ ์ฌ๋๋ค์ ๊นํ์ ์ฐพ์๋ณด๊ธฐ ์์ํ๊ณ , ๊ทธ ์์์ ๋์ ๋ฐฉ์์ ๊ตฌ์ถ์ค์ ์๋ค.
ํ๋ก์ ํธ๊ฐ ๊ธฐ๊ฐ์ด ์ ํด์ ธ์๋ค๋ณด๋, ๊ณ ๋ฏผํ๋ ๋ฐ์ ์๊ฐ์ ๋๋ฌด ๋ง์ด ๋ ์ ์์ด์ ๋ฆฌํฉํ ๋ง์ ์ค๊ฐ์ด๋ ๋ง์ง๋ง์ ๋ง์ด ํ์ง ์์๊น ์ถ๋ค.
์ง๊ธ ํ์ฌ๋..
<div className="p-5 w-32 rounded">
<div className="flex">
<img className="rounded w-full" src="https://bit.ly/2k1H1t6" />
<div className="flex flex-row mt-2">
<div className="rounded py-2 px-4 bg-mono-400">
<div className="text-mono-100">๋ด๊ธฐ</div>
</div>
<div className="text-sm font-bold text-pale-100">
Perfect Night
</div>
</div>
<span className="text-xl font-semibold">
LE SSERAFIM
</span>
<span className="text-xl font-semibold">$119/night</span>
<div className="flex flex-row items-center">
<Icon src={MdStar} color="#ED8936" />
<span className="text-sm">
<span className="font-bold">4.84</span>
(190)
</span>
</div>
</div>
</div>
์ด ์ฝ๋์ฒ๋ผ ์๊ธด ๋ด ์ฝ๋๋ฅผ
<Box padding={5} width="320px" border="sm">
<Stack gap={2}>
<Image borderRadius="md" src="https://bit.ly/2k1H1t6" />
<Row gap={2}>
<Badge color="#702459">๋ด๊ธฐ</Badge>
<Spacer left={2}>
<Text size="sm" weight="bold" color="#702459">
Perfect Night
</Text>
</Spacer>
</Row>
<Text size="xl" weight="semibold">
LE SSERAFIM
</Text>
<Text>$119/night</Text>
<Row gap={1}>
<Icon src={MdStar} color="#ED8936" />
<Text size="sm">
<Text size="sm" weight="bold">
4.84
</Text>{" "}
(190)
</Text>
</Row>
</Stack>
</Box>
์ด ์ฝ๋์ฒ๋ผ ๋ํ๋ผ ์ ์๋๋ก ๋ฆฌํฉํ ๋ง์ ํ๊ณ ์๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ปดํฌ๋ํธํํ๋ฉด์ ๋์์ธ์์คํ , ํ์ดํฌ๊ทธ๋ํผ ์์คํ ๋ชจ๋ ๊ฐ์ ธ๊ฐ ์ ์๋ค๊ณ ํ๋จ๋์ด ์ด์ฌํ ์์ ์ค์ด๋ค.
์ด๋ฐ ๊ฒฝํ์ ํตํด์ ์งง์ง๋ง, ๋จธ๋ฆฌ ๋ฏ์ด์ง๋ฏ์ด ๊ณ ๋ฏผํ๊ณ ๋์ ํ๋ฉด์ ์ ํ์ฌ๋ค์ด ๋ฆฌํฉํ ๋ง์ ์ฝ๊ฒ ํ ์ ์๋์ง, ๋ฐฉ์์ ๋ฐ๊ฟ ๋ ์ ๋ฐ๋๋ฅผ ํ๋์ง ๊ฐ์ ์ ์ผ๋ก๋๋ง ๋๋ ์ ์์๋ ๊ฒ ๊ฐ๋ค.
์ผ๋จ ์ด๋ฒ ํ๋ก์ ํธ ์คํ์ผ๋ง ๋ชฉํ๋
- ๋์์ธ ์์คํ ๊ตฌ์ถ
- tailwind CSS๋ฅผ '์์ฐ๋' ํจ์จ์ ์ธ ๋ฐฉ์ ๊ตฌ์ถ
- ํ๋ก์ ํธ์์ tailwind ๋์ฅ๋ณด๊ธฐ
์ด๋ค.
๋ ์ด์ฌํ ๋ฅํ๊ฒ ์จ๋ณด๊ณ ํ๋ก์ ํธ๊ฐ ๋๋๊ณ 2ํ์ผ๋ก ๋๋์ ๋ค์ ๊ฐ์ ธ์ค๊ฒ ๋ค.
์ฐธ๊ณ
https://sancho.dev/blog/tailwind-and-design-systems
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ณผ์ฐ ๋๊ตฌ๋ฅผ ์ํ ์น ์ ๊ทผ์ฑ์ธ๊ฐ (0) | 2023.11.22 |
---|---|
CSR vs SSR (0) | 2022.01.02 |
Sass์ฌ์ฉ ์ค๋ฅ & Sass๋ฅผ CSS๋ก ๋ฐ๊พธ๊ธฐ (0) | 2021.01.13 |
Input ํ๊ทธ, ์์ฑ (0) | 2021.01.03 |