๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

react

React / ์Šคํƒ€์ผ๋ง (3) - tailwindcss

Tailwind CSS

๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ Utility-First CSS ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์ด๋ฏธ ์ž‘์„ฑ๋œ CSS์ฝ”๋“œ๊ฐ€ ํด๋ž˜์Šค๋กœ ์ง€์ •๋˜์–ด ์žˆ์–ด ์ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

*Utility-First CSS : ๋ฏธ๋ฆฌ ์„ธํŒ…๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ HTML์ฝ”๋“œ ๋‚ด์—์„œ CSS๋ฅผ ์ ์šฉ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋œป ํ•œ๋‹ค.

*์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค : ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์„ ๋ชจ์•„์„œ ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค. ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Tailwind CSS์˜ ์žฅ๋‹จ์ 

์žฅ์ 

  • CSS ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋จ => ๊ฐœ๋ฐœ์†๋„๊ฐ€ ๋นจ๋ผ์ง
  • ์ฒด๊ณ„์ ์ด๊ณ  ์ผ๊ด€๋œ ๋””์ž์ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋‹จ์ 

  • ์ดˆ๊ธฐ ์„ค์ •์ด ๋ณต์žกํ•จ
  • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ์•ˆ์ข‹์•„์ง (ํŠนํžˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์„ ์ ์šฉ ํ•  ๋•Œ๋Š” ์ •๋ง ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ๋”๋Ÿฌ์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค)
  • css์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ (๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํด๋ž˜์Šค๋“ค๋„ ๋‹ค ํฌํ•จ๋˜์–ด์žˆ์Œ) 

 

 


 

 

์‚ฌ์šฉ ์ค€๋น„

1. ์„ค์น˜ (Tailwind CSS v3 )

1) v3์œผ๋กœ ์˜์กด์„ฑ ์„ค์น˜

v3์—์„œ๋Š” ์„ค์ • ํŒŒ์ผ(tailwind.config.js)๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ • ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.

- PostCSS : JS๊ธฐ๋ฐ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ CSS๋ฅผ ํŒŒ์‹ฑ/๋ณ€ํ™˜ํ•จ

- Autoprefixer : PostCSS์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ, ๋ธŒ๋ผ์šฐ์ € ์ ‘๋‘์‚ฌ(Vendor Prefix. '-webkit-', '-moz-', '-ms-', '-o-')๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์คŒ

  (transition:transform 1s; ๋งŒ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ -webkit-transition, -moz-transition ๋“ฑ ์ž๋™์œผ๋กœ ์‚ฝ์ž…ํ•ด์คŒ)

## ์„ค์น˜
npm install tailwindcss@3 postcss autoprefixer

## ์„ค์ • ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
npx tailwindcss init -p

 

2) ์„ค์ • ํŒŒ์ผ(tailwind.config.js) ์ˆ˜์ •

/** @type {import('tailwindcss').Config} */
export default {
  content: ['./index.html', './src/**/*.{js,jsx,ts,tsx}'],
  theme: {
    extend: {},
  },
  plugins: [],
};

 

3) ./src/index.css์˜ ๊ธฐ์กด๋‚ด์šฉ ์‚ญ์ œ ํ›„ @tailwind ์ง€์‹œ๋ฌธ ์ถ”๊ฐ€

@tailwind base;
@tailwind components;
@tailwind utilities;

 

4) ์ด๋•Œ @tailwind์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋œฌ๋‹ค๋ฉด 3. ์ต์Šคํ…์…˜ ์„ค์น˜์— ์žˆ๋Š” ์ต์Šคํ…์…˜๋“ค์„ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 


 

2. ์„ค์น˜ (Tailwind CSS v4์˜ ๊ฒฝ์šฐ)

++ Vite ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ PostCSS ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋™์‹œ์— ์“ฐ๋ฉด ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‘˜ ์ค‘ vite ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์“ฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์žฌ์ˆ˜์ •ํ•˜์˜€๋‹ค.

 

 

1) ํ„ฐ๋ฏธ๋„์— ์„ค์น˜

npm install tailwindcss @tailwindcss/vite

 

2) vite.config.js์— ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€

import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'

export default defineConfig({
  plugins: [ tailwindcss() ],
})

 

3) ./src/index.css์˜ ๊ธฐ์กด๋‚ด์šฉ ์‚ญ์ œ ํ›„ @tailwind ์ง€์‹œ๋ฌธ ์ถ”๊ฐ€

@import 'tailwindcss';

 

 


 

 

3. ์ต์Šคํ…์…˜ ์„ค์น˜

1) PostCSS Language Support

https://marketplace.visualstudio.com/items/?itemName=csstools.postcss

 

PostCSS Language Support - Visual Studio Marketplace

Extension for Visual Studio Code - Syntax highlighting for modern and experimental CSS in VSCode

marketplace.visualstudio.com

 

2) Tailwind CSS IntelliSense

ํด๋ž˜์Šค๋ฅผ ์ž๋™์™„์„ฑํ•ด์ฃผ๋Š” ์ต์Šคํ…์…˜

https://marketplace.visualstudio.com/items/?itemName=bradlc.vscode-tailwindcss

 

Tailwind CSS IntelliSense - Visual Studio Marketplace

Extension for Visual Studio Code - Intelligent Tailwind CSS tooling for VS Code

marketplace.visualstudio.com

 

์„ค์น˜ ํ›„ ํŽธํ•˜๊ฒŒ ์ž๋™์™„์„ฑ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค

(๋‚œ ๊ทธ๋ƒฅ ์•ˆ๋˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ className=" ์—์„œ ํ•œ๋ฒˆ ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ•ด์•ผ ์ž๋™์™„์„ฑ์ด ์ƒ๊ธด๋‹ค๊ณ  ํ•œ๋‹ค...)

 

Mac : alt+Shift+p

Window : ctrl+Shift+p

๋ฅผ ๋ˆ„๋ฅธ ํ›„ open user Settings(JSON)์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

 

๊ฐ€์žฅ ์ตœ์ƒ์œ„ {} ์•ˆ์— ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

  // tailwindcss
  "editor.quickSuggestions": {
    "strings": true
  },
  "files.associations": {
    "*.js": "javascript",
    "*.css": "tailwindcss"
  },

 

๊ทธ๋ž˜๋„ ์ ์šฉ์ด ์•ˆ๋œ๋‹ค๋ฉด vscode๋ฅผ ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ์ž˜ ์ ์šฉ์ด ๋œ๋‹ค.

 

 

 


 

 

 

์‚ฌ์šฉ๋ฐฉ๋ฒ•

 

 

๊ณต์‹๋ฌธ์„œ : https://tailwindcss.com/docs/installation/using-vite

๊ณต์‹๋ฌธ์„œ์—์„œ ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์–ด๋งˆ์–ด๋งˆํ•œ ํด๋ž˜์Šค๋“ค...

 

 

์˜ˆ์‹œ 1

import './App.css';

function App() {
  return (
    <div className="h-screen flex justify-center items-center">
      <div className="text-3xl text-blue-700 font-bold underline">
        Vite + React
      </div>
    </div>
  );
}

 

์ด ๋•Œ h-screen์€ height : 100vh๋ฅผ ๋œปํ•˜๋ฉฐ, h-[100vh]์ฒ˜๋Ÿผ ์“ธ ์ˆ˜๋„ ์žˆ๊ณ ,

text-blue-700์€ text-[#1447e6] ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ๋„ ๋Œ€์‹  ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

 

 

 

 

์ฐธ๊ณ 
- tailwind css ์„ค์น˜ : 
1. https://www.fdaytalk.com/npx-tailwindcss-init-npm-error-could-not-determine-executable-to-run/
2. https://www.inflearn.com/community/questions/1518289/tailwind-css-%EB%B2%84%EC%A0%BC-%EB%8B%A4%EB%A6%84%EB%AC%B8%EC%A0%9C?srsltid=AfmBOooQa_OwWVkRR8qKJ62N-dqazbGelwnTQnL14baezBbRCgg9RZda
3. https://tailwindcss.com/docs/installation/using-vite
- ์ž๋™์™„์„ฑ : https://frontend-development.tistory.com/96

 

 

'react' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React / openweatherapi ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2025.04.17
React / Todo-List ๋งŒ๋“ค๊ธฐ (2)  (0) 2025.04.17
React / ์Šคํƒ€์ผ๋ง (2) - Styled Components  (1) 2025.04.16
React / ์Šคํƒ€์ผ๋ง (1) - SCSS  (0) 2025.04.15
React / custom Hook  (1) 2025.04.11