π κ³Όλν Inline μ€νμΌλ§: CSS μ°μ μμ μ λͺ½κ³Ό μ€νμΌ μ¬μ¬μ©μ± μ ν
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;
}