[HTML/CSS] Tailwind CSS ๋ค์ด๋๋ฏน ํด๋์ค ์ฌ์ฉ์ ์ฃผ์ํ ์
Tailwind CSS๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ฐํ์์ ํฌํจํ์ง ์๋๋ค. ์ด๋ ํด๋์ค ์ด๋ฆ์ ๋น๋ ํ์์ ์ถ์ถํ์ฌ ์ ์ ์ธ CSS ํ์ผ๋ง ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ์์ Tailwind CSS ๊ด๋ จ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํํ์ง ์๋๋ค. ๋๋ฌธ์ Tailwind CSS๋ ๋ฐํ์์ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฐ์ ์์กดํ ์ ์๋ค. ๋ฐํ์์ ๋์ ์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ Emotion ๊ฐ์ CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํ์ฉํด์ผ ํ๋ค.
Tailwind doesn’t include any sort of client-side runtime, so class names need to be statically extractable at build-time, and can’t depend on any sort of arbitrary dynamic values that change on the client. Use inline styles for these situations, or combine Tailwind with a CSS-in-JS library like Emotion if it makes sense for your project. — ์ฐธ๊ณ
๋ค์ด๋๋ฏน ํด๋์ค ์ฌ์ฉ ๋ฐฉ๋ฒ
โถ ์์ฑ๋ ํด๋์ค ์ด๋ฆ ์ฌ์ฉ
// โ Don't use string concatenation to create class names
<div className={`mt-[${size === 'lg' ? '22px' : '17px' }]`}></div>
// โ
Do dynamically select a complete class name
<div className={ size === 'lg' ? 'mt-[22px]' : 'mt-[17px]' }></div>
โท ๋ค์ด๋๋ฏน ํน์ ์ฌ์ฉ์ ์ ์ CSS ๊ฐ์ ์ธ๋ผ์ธ ์คํ์ผ ์ฌ์ฉ
// โ Arbitrary values cannot be computed from dynamic values
<div class="bg-[{{ userThemeColor }}]"></div>
// โ
Use inline styles for truly dynamic or user-defined values
<div style="background-color: {{ userThemeColor }}"></div>
์๋ชป๋ ์ฌ์ฉ ์์
Tailwind CSS ํด๋์ค๋ ๋น๋ ํ์์ ์ ์ ์ผ๋ก ์ถ์ถ ๊ฐ๋ฅํ ํํ๋ก ์ ๊ณตํด์ผ ์ ์์ ์ผ๋ก ์๋ํ๋ค. ์ฆ, ๋น๋ ํ์์ mt-2.5
์ฒ๋ผ ์์ฑ๋ Tailwind CSS ํด๋์ค ์ด๋ฆ์ ์ ๊ณตํด์ผ ํ๋ค. ์๋๊ฐ์ด mt-${expression}
๋์ ์ผ๋ก ์์ฑํ๋ฉด ์คํ์ผ์ด ์ ์ฉ๋์ง ์์ผ๋ฏ๋ก ์ฃผ์ํ๋ค.
function HelloWorld({
greeting = 'hello',
greeted = '"World"',
silent = false,
onMouseOver,
}) {
if (!greeting) {
return null;
}
// TODO: Don't use random in render
let num = Math.floor(Math.random() * 1e7)
.toString()
.replace(/\.\d+/gi, '');
return (
<div
className="HelloWorld"
title={`You are visitor number ${num}`}
onMouseOver={onMouseOver}
>
<strong>
{greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase()}
</strong>
{greeting.endsWith(',') ? (
' '
) : (
<span style={{ color: 'grey' }}>", "</span>
)}
<em>{greeted}</em>
{silent ? '.' : '!'}
</div>
);
}
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTMl/CSS] ์๋ฆฌ๋จผํธ์ ๋ชจ๋ CSS ์คํ์ผ ์์ฑ / ๊ฐ ์กฐํํ๊ธฐ (0) | 2024.05.08 |
---|---|
[HTML/CSS] backdrop-filter vs filter ์์ฑ ๋น๊ต (0) | 2024.05.08 |
[DevTools] 1Password์์ SSH ํค ๊ด๋ฆฌํ๊ธฐ (0) | 2024.05.08 |
[Algorithm] ํต ์ ๋ ฌ(Quick Sort) ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ (0) | 2024.05.07 |
[Algorithm] ๋ถํ ์ ๋ณต / ๋ณํฉ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ (0) | 2024.05.07 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[HTMl/CSS] ์๋ฆฌ๋จผํธ์ ๋ชจ๋ CSS ์คํ์ผ ์์ฑ / ๊ฐ ์กฐํํ๊ธฐ
[HTMl/CSS] ์๋ฆฌ๋จผํธ์ ๋ชจ๋ CSS ์คํ์ผ ์์ฑ / ๊ฐ ์กฐํํ๊ธฐ
2024.05.08 -
[HTML/CSS] backdrop-filter vs filter ์์ฑ ๋น๊ต
[HTML/CSS] backdrop-filter vs filter ์์ฑ ๋น๊ต
2024.05.08 -
[DevTools] 1Password์์ SSH ํค ๊ด๋ฆฌํ๊ธฐ
[DevTools] 1Password์์ SSH ํค ๊ด๋ฆฌํ๊ธฐ
2024.05.08 -
[Algorithm] ํต ์ ๋ ฌ(Quick Sort) ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ
[Algorithm] ํต ์ ๋ ฌ(Quick Sort) ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ
2024.05.07