색상 커스터마이징

여러분의 프로젝트에 맞게 기본 색상 팔레트를 커스터마이징하는 방법을 알아보겠습니다.

기본 색상 팔레트

Tailwind는 특별한 브랜딩을 고려하지 않아도 바로 사용할 수 있는 전문적으로 설계된 기본 색상 팔레트를 제공합니다.

Slate
50
#f8fafc
100
#f1f5f9
200
#e2e8f0
300
#cbd5e1
400
#94a3b8
500
#64748b
600
#475569
700
#334155
800
#1e293b
900
#0f172a
950
#020617
Gray
50
#f9fafb
100
#f3f4f6
200
#e5e7eb
300
#d1d5db
400
#9ca3af
500
#6b7280
600
#4b5563
700
#374151
800
#1f2937
900
#111827
950
#030712
Zinc
50
#fafafa
100
#f4f4f5
200
#e4e4e7
300
#d4d4d8
400
#a1a1aa
500
#71717a
600
#52525b
700
#3f3f46
800
#27272a
900
#18181b
950
#09090b
Neutral
50
#fafafa
100
#f5f5f5
200
#e5e5e5
300
#d4d4d4
400
#a3a3a3
500
#737373
600
#525252
700
#404040
800
#262626
900
#171717
950
#0a0a0a
Stone
50
#fafaf9
100
#f5f5f4
200
#e7e5e4
300
#d6d3d1
400
#a8a29e
500
#78716c
600
#57534e
700
#44403c
800
#292524
900
#1c1917
950
#0c0a09
Red
50
#fef2f2
100
#fee2e2
200
#fecaca
300
#fca5a5
400
#f87171
500
#ef4444
600
#dc2626
700
#b91c1c
800
#991b1b
900
#7f1d1d
950
#450a0a
Orange
50
#fff7ed
100
#ffedd5
200
#fed7aa
300
#fdba74
400
#fb923c
500
#f97316
600
#ea580c
700
#c2410c
800
#9a3412
900
#7c2d12
950
#431407
Amber
50
#fffbeb
100
#fef3c7
200
#fde68a
300
#fcd34d
400
#fbbf24
500
#f59e0b
600
#d97706
700
#b45309
800
#92400e
900
#78350f
950
#451a03
Yellow
50
#fefce8
100
#fef9c3
200
#fef08a
300
#fde047
400
#facc15
500
#eab308
600
#ca8a04
700
#a16207
800
#854d0e
900
#713f12
950
#422006
Lime
50
#f7fee7
100
#ecfccb
200
#d9f99d
300
#bef264
400
#a3e635
500
#84cc16
600
#65a30d
700
#4d7c0f
800
#3f6212
900
#365314
950
#1a2e05
Green
50
#f0fdf4
100
#dcfce7
200
#bbf7d0
300
#86efac
400
#4ade80
500
#22c55e
600
#16a34a
700
#15803d
800
#166534
900
#14532d
950
#052e16
Emerald
50
#ecfdf5
100
#d1fae5
200
#a7f3d0
300
#6ee7b7
400
#34d399
500
#10b981
600
#059669
700
#047857
800
#065f46
900
#064e3b
950
#022c22
Teal
50
#f0fdfa
100
#ccfbf1
200
#99f6e4
300
#5eead4
400
#2dd4bf
500
#14b8a6
600
#0d9488
700
#0f766e
800
#115e59
900
#134e4a
950
#042f2e
Cyan
50
#ecfeff
100
#cffafe
200
#a5f3fc
300
#67e8f9
400
#22d3ee
500
#06b6d4
600
#0891b2
700
#0e7490
800
#155e75
900
#164e63
950
#083344
Sky
50
#f0f9ff
100
#e0f2fe
200
#bae6fd
300
#7dd3fc
400
#38bdf8
500
#0ea5e9
600
#0284c7
700
#0369a1
800
#075985
900
#0c4a6e
950
#082f49
Blue
50
#eff6ff
100
#dbeafe
200
#bfdbfe
300
#93c5fd
400
#60a5fa
500
#3b82f6
600
#2563eb
700
#1d4ed8
800
#1e40af
900
#1e3a8a
950
#172554
Indigo
50
#eef2ff
100
#e0e7ff
200
#c7d2fe
300
#a5b4fc
400
#818cf8
500
#6366f1
600
#4f46e5
700
#4338ca
800
#3730a3
900
#312e81
950
#1e1b4b
Violet
50
#f5f3ff
100
#ede9fe
200
#ddd6fe
300
#c4b5fd
400
#a78bfa
500
#8b5cf6
600
#7c3aed
700
#6d28d9
800
#5b21b6
900
#4c1d95
950
#2e1065
Purple
50
#faf5ff
100
#f3e8ff
200
#e9d5ff
300
#d8b4fe
400
#c084fc
500
#a855f7
600
#9333ea
700
#7e22ce
800
#6b21a8
900
#581c87
950
#3b0764
Fuchsia
50
#fdf4ff
100
#fae8ff
200
#f5d0fe
300
#f0abfc
400
#e879f9
500
#d946ef
600
#c026d3
700
#a21caf
800
#86198f
900
#701a75
950
#4a044e
Pink
50
#fdf2f8
100
#fce7f3
200
#fbcfe8
300
#f9a8d4
400
#f472b6
500
#ec4899
600
#db2777
700
#be185d
800
#9d174d
900
#831843
950
#500724
Rose
50
#fff1f2
100
#ffe4e6
200
#fecdd3
300
#fda4af
400
#fb7185
500
#f43f5e
600
#e11d48
700
#be123c
800
#9f1239
900
#881337
950
#4c0519

하지만 색상 팔레트를 커스터마이징해야 한다면, tailwind.config.js 파일의 theme 섹션에서 colors 키 아래에 색상을 설정할 수 있습니다.

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    colors: {
      // 여기에 색상 팔레트를 설정하세요
    }
  }
}

커스텀 색상 팔레트를 만들 때는, 원하는 색상을 정확히 알고 있다면 커스텀 색상 설정을 통해 처음부터 직접 구성하거나, 빠르게 시작하고 싶다면 기본 색상 팔레트에서 색상을 골라 사용할 수 있습니다.


커스텀 색상 사용하기

기본 색상 팔레트를 완전히 커스텀 색상으로 대체하고 싶다면, 설정 파일의 theme.colors 섹션 아래에 직접 색상을 추가하세요:

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    colors: {
      transparent: 'transparent',
      current: 'currentColor',
      'white': '#ffffff',
      'purple': '#3f3cbb',
      'midnight': '#121063',
      'metal': '#565584',
      'tahiti': '#3ab7bf',
      'silver': '#ecebff',
      'bubble-gum': '#ff77e9',
      'bermuda': '#78dcca',
    },
  },
}

기본적으로 이 색상들은 텍스트 색상 유틸리티, 테두리 색상 유틸리티, 배경 색상 유틸리티 등 색상을 사용하는 모든 곳에서 사용할 수 있습니다.

<div class="bg-midnight text-tahiti">
  <!-- ... -->
</div>

프로젝트에서 transparentcurrentColor와 같은 값을 사용하려면 이 값들을 포함하는 것을 잊지 마세요.

색상 객체 문법

팔레트에 동일한 색상의 여러 색조가 포함된 경우, 중첩된 색상 객체 문법을 사용하여 그룹화하면 편리합니다:

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    colors: {
      transparent: 'transparent',
      current: 'currentColor',
      'white': '#ffffff',
      'tahiti': {
        100: '#cffafe',
        200: '#a5f3fc',
        300: '#67e8f9',
        400: '#22d3ee',
        500: '#06b6d4',
        600: '#0891b2',
        700: '#0e7490',
        800: '#155e75',
        900: '#164e63',
      },
      // ...
    },
  },
}

중첩된 키는 부모 키와 결합되어 bg-tahiti-400과 같은 클래스 이름을 생성합니다.

Tailwind의 다른 많은 부분과 마찬가지로, 접미사 없이 값을 정의하고 싶을 때 특별한 DEFAULT 키를 사용할 수 있습니다:

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    colors: {
      // ...
      'tahiti': {
        light: '#67e8f9',
        DEFAULT: '#06b6d4',
        dark: '#0e7490',
      },
      // ...
    },
  },
}

이렇게 하면 bg-tahiti, bg-tahiti-light, bg-tahiti-dark와 같은 클래스가 생성됩니다.

임의 값 사용하기

프로젝트에서 일회성 커스텀 색상이 필요하다면, 테마에 추가하는 대신 Tailwind의 임의 값 표기법을 사용하여 해당 색상에 대한 클래스를 즉석에서 생성할 수 있습니다.

<button class="bg-[#1da1f2] text-white ...">
  <svg><!-- ... --></svg>
  Share on Twitter
</button>

더 자세한 내용은 임의 값 사용하기 문서를 참고하세요.

색상 생성하기

Tailwind의 기본 색상 50~950 단계가 어떻게 자동으로 생성되었는지 궁금하다면, 안타깝게도 색상은 복잡한 주제입니다. 최상의 결과를 얻기 위해 우리는 Tailwind의 기본 색상을 수작업으로 직접 선택했습니다. 각 색상을 눈으로 꼼꼼히 조정하고 실제 디자인에서 테스트하여 만족스러운 결과를 얻을 때까지 작업했습니다.

만약 여러분이 직접 커스텀 색상 팔레트를 만들고 싶지만 수작업으로 진행하는 데 자신이 없다면, UI Colors를 추천합니다. 이 도구는 원하는 색상을 기반으로 좋은 출발점을 제공해줍니다.

또한 팔레트를 만드는 데 유용한 두 가지 도구는 PalettteColorBox입니다. 이 도구들은 작업을 대신해주지는 않지만, 이러한 작업을 위한 인터페이스가 잘 설계되어 있습니다.


기본 색상 사용하기

프로젝트에 완전히 커스텀한 색상 세트가 정해져 있지 않다면, tailwindcss/colors를 설정 파일에서 불러와 기본 색상 팔레트에서 원하는 색상을 선택할 수 있습니다.

tailwind.config.js
const colors = require('tailwindcss/colors')

module.exports = {
  theme: {
    colors: {
      transparent: 'transparent',
      current: 'currentColor',
      black: colors.black,
      white: colors.white,
      gray: colors.gray,
      emerald: colors.emerald,
      indigo: colors.indigo,
      yellow: colors.yellow,
    },
  },
}

이 방법은 색상 팔레트를 의도적으로 제한하고 IntelliSense가 제안하는 클래스 이름의 수를 줄이고 싶을 때 유용합니다.

색상 이름 별칭 지정하기

기본 색상 팔레트의 이름을 더 간단하고 기억하기 쉽게 별칭으로 지정할 수 있습니다:

tailwind.config.js
const colors = require('tailwindcss/colors')

module.exports = {
  theme: {
    colors: {
      transparent: 'transparent',
      current: 'currentColor',
      black: colors.black,
      white: colors.white,
      gray: colors.slate,
      green: colors.emerald,
      purple: colors.violet,
      yellow: colors.amber,
      pink: colors.fuchsia,
    },
  },
}

이 방법은 특히 회색 계열에서 자주 사용됩니다. 일반적으로 하나의 프로젝트에서는 한 가지 회색 계열만 사용하므로, 예를 들어 bg-neutral-300 대신 bg-gray-300을 입력할 수 있도록 하는 것이 편리합니다.

추가 색상 적용하기

기본 색상 팔레트에 새로운 색상을 추가하려면 설정 파일의 theme.extend.colors 섹션에 추가하면 됩니다.

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      colors: {
        brown: {
          50: '#fdf8f6',
          100: '#f2e8e5',
          200: '#eaddd7',
          300: '#e0cec7',
          400: '#d2bab0',
          500: '#bfa094',
          600: '#a18072',
          700: '#977669',
          800: '#846358',
          900: '#43302b',
        },
      }
    },
  },
}

또한 디자인에 필요한 경우 기존 색상에 추가 색조를 적용할 수도 있습니다.

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      colors: {
        blue: {
          950: '#17275c',
        },
      }
    },
  },
}

기본 색상 비활성화하기

기본 색상 중 일부를 비활성화하려면, 기본 색상 팔레트를 재정의하고 원하는 색상만 포함시키는 것이 가장 좋은 방법입니다:

tailwind.config.js
const colors = require('tailwindcss/colors')

module.exports = {
  theme: {
    colors: {
      transparent: 'transparent',
      current: 'currentColor',
      black: colors.black,
      white: colors.white,
      gray: colors.gray,
      emerald: colors.emerald,
      indigo: colors.indigo,
      yellow: colors.yellow,
    },
  },
}

색상 이름 지정하기

Tailwind는 기본적으로 리터럴 색상 이름(예: 빨강, 초록 등)과 숫자 스케일(50은 밝고 900은 어둡게)을 사용합니다. 우리는 이 방식이 대부분의 프로젝트에 가장 적합하며, primarydanger와 같은 추상적인 이름을 사용하는 것보다 유지보수가 더 쉽다고 생각합니다.

그렇지만, Tailwind에서 색상 이름을 원하는 대로 지정할 수 있습니다. 예를 들어, 여러 테마를 지원해야 하는 프로젝트를 작업 중이라면, 더 추상적인 이름을 사용하는 것이 합리적일 수 있습니다:

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    colors: {
      primary: '#5c6ac4',
      secondary: '#ecc94b',
      // ...
    }
  }
}

위와 같이 색상을 명시적으로 구성할 수도 있고, 기본 색상 팔레트에서 색상을 가져와 별칭을 지정할 수도 있습니다:

tailwind.config.js
const colors = require('tailwindcss/colors')

module.exports = {
  theme: {
    colors: {
      primary: colors.indigo,
      secondary: colors.yellow,
      neutral: colors.gray,
    }
  }
}

다시 말하지만, 대부분의 프로젝트에서는 기본 명명 규칙을 따르는 것을 권장하며, 정말 특별한 이유가 있는 경우에만 추상적인 이름을 사용하는 것이 좋습니다.


CSS 변수 사용하기

CSS 변수로 색상을 정의하고 싶다면, 투명도 조정 문법과 함께 사용하려면 색상 _채널_만 변수로 정의해야 합니다.

CSS 변수를 색상 공간 함수 없이 채널로 정의하세요

main.css
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    --color-primary: 255 115 179;
    --color-secondary: 111 114 185;
    /* ... */
  }
}

색상 공간 함수를 포함하지 마세요. 그렇지 않으면 투명도 조정이 작동하지 않습니다

main.css
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    --color-primary: rgb(255 115 179);
    --color-secondary: rgb(111 114 185);
    /* ... */
  }
}

그런 다음 설정 파일에서 색상을 정의할 때, 사용하는 색상 공간과 rgba와 같이 알파 채널이 필요한 색상 공간의 기본 알파 값을 포함해야 합니다.

tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    colors: {
      // 모던 `rgb` 사용
      primary: 'rgb(var(--color-primary))',
      secondary: 'rgb(var(--color-secondary))',

      // 모던 `hsl` 사용
      primary: 'hsl(var(--color-primary))',
      secondary: 'hsl(var(--color-secondary))',

      // 레거시 `rgba` 사용
      primary: 'rgba(var(--color-primary), 1)',
      secondary: 'rgba(var(--color-secondary), 1)',
    }
  }
}

이 방식으로 색상을 정의할 때, 사용하는 색상 함수에 맞게 CSS 변수의 형식이 올바른지 확인해야 합니다. 모던 공백으로 구분된 문법을 사용한다면 공백을 사용하고, rgbahsla 같은 레거시 함수를 사용한다면 쉼표를 사용해야 합니다.

main.css
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    /* rgb(255 115 179 / 1) 용 */
    --color-primary: 255 115 179;

    /* hsl(333deg 100% 73% / 1) 용 */
    --color-primary: 333deg 100% 73%;

    /* rgba(255, 115, 179, 1) 용 */
    --color-primary: 255, 115, 179;
  }
}