August 11, 2025

🎭 κ³Όλ„ν•œ Inline μŠ€νƒ€μΌλ§: CSS μš°μ„ μˆœμœ„ μ•…λͺ½κ³Ό μŠ€νƒ€μΌ μž¬μ‚¬μš©μ„± μ €ν•˜

React
CSS
μ•„ν‚€ν…μ²˜
μ»΄ν¬λ„ŒνŠΈ
넀이밍
Lint/Formatter
μ„±λŠ₯
μ›Ήν‘œμ€€

Summary

Inline μŠ€νƒ€μΌλ§μ€ CSS μš°μ„ μˆœμœ„ 문제, μŠ€νƒ€μΌ μž¬μ‚¬μš©μ„± μ €ν•˜, μœ μ§€λ³΄μˆ˜μ„± μ•…ν™”, λ³΄μ•ˆ 문제 λ“±μ˜ 원인이 λ©λ‹ˆλ‹€. CSS 클래슀, CSS Modules, styled-components 등을 μ‚¬μš©ν•˜μ—¬ μŠ€νƒ€μΌμ„ μ™ΈλΆ€μ—μ„œ κ΄€λ¦¬ν•˜κ³ , CSS λ³€μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μŠ€νƒ€μΌ μž¬μ‚¬μš©μ„±μ„ λ†’μ—¬μ•Ό ν•©λ‹ˆλ‹€.

Why Wrong?

Inline μŠ€νƒ€μΌλ§μ€ μ»΄ν¬λ„ŒνŠΈ μŠ€νƒ€μΌλ§μ— λŒ€ν•œ κ°€μž₯ κ°•λ ₯ν•œ 영ν–₯λ ₯을 κ°€μ§€λ―€λ‘œ CSS μš°μ„ μˆœμœ„ κ·œμΉ™μ„ λ¬΄μ‹œν•˜κ³  μŠ€νƒ€μΌ μΆ©λŒμ„ μΌμœΌν‚€κΈ° μ‰½μŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ™μΌν•œ μŠ€νƒ€μΌμ„ μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ— 반볡적으둜 μ μš©ν•΄μ•Ό ν•˜λ―€λ‘œ μ½”λ“œ 쀑볡을 μ¦κ°€μ‹œν‚€κ³  μœ μ§€λ³΄μˆ˜μ„±μ„ μ €ν•˜μ‹œν‚΅λ‹ˆλ‹€. μŠ€νƒ€μΌμ„ 쀑앙 μ§‘μ€‘μ‹μœΌλ‘œ κ΄€λ¦¬ν•˜μ§€ λͺ»ν•˜λ©΄ ν…Œλ§ˆ λ³€κ²½μ΄λ‚˜ μŠ€νƒ€μΌ μ—…λ°μ΄νŠΈκ°€ μ–΄λ €μ›Œμ§€κ³ , Content Security Policy(CSP) ν™˜κ²½μ—μ„œ unsafe-inline μ§€μ‹œμ–΄λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” λ³΄μ•ˆ 문제λ₯Ό μ•ΌκΈ°ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. CSS μ• λ‹ˆλ©”μ΄μ…˜ μ‚¬μš©λ„ μ œν•œλ©λ‹ˆλ‹€.

How to Fix?

CSS 클래슀, CSS Modules, styled-components, λ˜λŠ” CSS-in-JS λΌμ΄λΈŒλŸ¬λ¦¬μ™€ 같은 μŠ€νƒ€μΌλ§ μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μŠ€νƒ€μΌμ„ μ»΄ν¬λ„ŒνŠΈ μ™ΈλΆ€μ—μ„œ μ •μ˜ν•˜κ³  관리해야 ν•©λ‹ˆλ‹€. μŠ€νƒ€μΌ μž¬μ‚¬μš©μ„±μ„ 높이기 μœ„ν•΄ CSS λ³€μˆ˜(custom properties)λ₯Ό ν™œμš©ν•˜κ³ , μŠ€νƒ€μΌ κ·œμΉ™μ„ λͺ…ν™•ν•˜κ²Œ μ •μ˜ν•˜μ—¬ CSS μš°μ„ μˆœμœ„ 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€. !important μ‚¬μš©μ€ μ΅œμ†Œν™”ν•˜κ³ , μŠ€νƒ€μΌ κ·œμΉ™μ„ ꡬ체적으둜 μ •μ˜ν•˜μ—¬ μ˜ˆμƒμΉ˜ λͺ»ν•œ μŠ€νƒ€μΌ μΆ©λŒμ„ λ°©μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Before Code (Bad)

function MyComponent() {
  return (
    <div style={{ 
      backgroundColor: 'lightblue',
      fontSize: '16px',
      padding: '10px'
    }}>
      Hello, world!
    </div>
  );
}

After Code (Good)

import styles from './MyComponent.module.css';

function MyComponent() {
  return (
    <div className={styles.myComponent}>
      Hello, world!
    </div>
  );
}

// MyComponent.module.css
.myComponent {
  background-color: lightblue;
  font-size: 16px;
  padding: 10px;
}