Tailwind
<div class={`text-${error ? "red" : "green"}-600`}></div>
이 코드는 조건문에 따라 'text-red-600' 혹은 ‘text-green-600’으로 변동하지만, Tailwind CSS는 이를 인식하지 못하고 건너뛰어버리고 만다.
<div class={`${error ? "text-red-600" : "text-green-600"}`}></div>
이 코드와 같이 작성해줘야 완전한 단어를 인식하여 CSS로 변환해준다.
<div
className={`${isImportant ? "text-red-600 text-lg font-bold" : "text-black"}`}
></div>
// Script
if (isImporant) {
document.querySelector(".title").className =
"title text-red-600 text-lg font-bold";
} else {
document.querySelector(".title").className = "title text-black";
}
// HTML
<h1 className="title">This is Title</h1>;
// Script
const colors = {
red: "text-red-600",
black: "text-black",
};
const textSizes = {
sm: "text-sm",
md: "text-md",
lg: "text-lg",
};
const coloredText = (color, size) => {
return `${colors[color]} ${textSizes[size]}`;
};
//HTML
<h1 className={isImpotant ? coloredText(red, lg) : coloredText(black, sm)}>
This is Title
</h1>;
// Script
const colors = {
red: "text-red-600",
black: "text-black",
};
const textSizes = {
sm: "text-sm",
md: "text-md",
lg: "text-lg",
};
const Button = ({ color, size, children }) => {
let textColor = colors[color];
let textSize = textSizes[size];
return <button className={`${textColor} ${textSize}`}>{children}</button>;
};
export default Button;
const { PALETTE } = require("./src/constants/palette")
module.exports = {
purge: [],
theme: {
extend: {
colors: {
customBlue: PALETTE.skyblue
}
}
}
}
function App() {
return (
// 사전에 정의해둔 커스텀 색상을 활용합니다.
<figure className="md:flex bg-customBlue rounded-xl p-8 md:p-0">
...
</figure>
);
}
export default App;
이렇게 하는 방법도 유용하지만 JIT 모드를 활용하면 훨씬 빠른 설정이 가능하다.
module.exports = {
purge: [
'./public/**/*.html',
'./src/**/*.{js,jsx,ts,tsx,vue}',
],
mode: "jit"
}
function App() {
return (
// 속성명-[커스텀할 값] 으로 테일윈드 클래스명을 직접 커스텀할 수 있습니다.
<figure className="md:flex bg-[#bae4f5] rounded-xl p-8 md:p-0">
...
</figure>
);
}
export default App;
참고 공식문서: https://v2.tailwindcss.com/docs/just-in-time-mode#overview
base
레이어는 리셋 규칙이나 HTML 요소 기본 스타일을 위한 레이어이다.@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
h1 {
@apply text-red-950;
}
h2 {
color: red;
}
}
components
레이어는 유틸리티로 재정의할 수 있는 클래스 기반 스타일을 위한 레이어다.@tailwind base;
@tailwind components;
@tailwind utilities;
@layer components {
.select2-dropdown {
@apply rounded-b-lg shadow-md;
}
.select2-search {
@apply rounded border border-gray-300;
}
.select2-results__group {
@apply text-lg font-bold text-gray-900;
}
/* ... */
}
utilities
레이어는 다른 스타일보다 우선으로 하는 소규모 단일 목적 클래스를 위한 레이어다.@tailwind base;
@tailwind components;
@tailwind utilities;
@layer utilities {
.content-auto {
content-visibility: auto;
}
}