front/react

[react] css ์‚ฌ์šฉ ๊ด€๋ จ (inline css, css obj, import css, import css module, composes, global css className)

๋ฐฐ๊ณ ํŒŒ์š” 2026. 1. 2. 11:56
728x90

๐Ÿ“ inline ์— css ์ ์šฉํ•˜๋ ค๋ฉด?

  • <h1 style={ {color:"blue"} }> ํ•˜์ด๋ฃจ ! </h1>
  • ๋ฆฌ์•กํŠธ์—์„œ style ์„ ๋„ฃ์œผ๋ ค๋ฉด ๊ฐ์ฒด๋กœ ๋„ฃ์–ด์•ผํ•˜๋‹ˆ๊นŒ!!
  • ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋‘๊ฐœ ์žˆ์–ด์•ผ ํ•จ. 

 


๐Ÿ“ css ๊ฐ์ฒด๋ฅผ ๋ฐ–์—์„œ ์„ ์–ธํ•˜๊ณ  ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์Œ.

  • const style2 = {
            color : 'red',
            backgroundColor : 'yellow',
            padding : '5px'
        }

    <h1 style={ style2 }>style obj style</h1>

 

 


๐Ÿ“ ์™ธ๋ถ€ css ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ์Œ.

  • import './style1.css';

    body {
        background-color: green;
        color : orange;
    }

 

 

๐Ÿ“ css ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ css ๋Š” --> ํ•ด๋‹น css ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜จ ์ปดํฌ๋„ŒํŠธ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ด๋ฆ„ ์ถฉ๋Œ์— ๋Œ€ํ•œ ๊ฑฑ์ •์€ ์—†์Œ !!
  • <h1 className={styles.title} >module css style</h1>

 


 

 

๐Ÿ“ CSS Module ?

  • ๋ฆฌ์•กํŠธ์—์„œ CSS ๋ชจ๋“ˆ์€ ํด๋ž˜์Šค ์ด๋ฆ„์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ปฌ ๋ฒ”์œ„๋กœ ์ง€์ •๋˜๋Š” CSS ํŒŒ์ผ.
  • CSS ํŒŒ์ผ์€ .module.css ํ™•์žฅ์ž๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•จ.
    • ex) Button.module.css , Flower.module.css
  • ์žฅ์ ?
    • CSS ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์ปดํฌ๋„ŒํŠธ์— ๋กœ์ปฌ๋กœ ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋œ CSS๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, CSS ํด๋ž˜์Šค ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ์Šคํƒ€์ผ์„ ๋” ์‰ฝ๊ฒŒ ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.
  • ------------ 
  • ------------
  • โญ๏ธโญ๏ธ composes
    • css module ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ. 
    • ๋‹ค๋ฅธ class ๋ฅผ ์ƒ์† ๋ฐ›๋Š” ๊ฐœ๋….
    • .radius2{ composes : title; border-radius: 20px; }
    • <h1 className={styles2.radius2}> == <h1 className={ `${styles2.title}` } style={ {border-radius: 20px;} }> ๊ณผ ๋™์ผํ•จ.
    • ๊ฐœ๋ฐœ์ž๋ชจ๋“œ ์ผœ์„œ ํ™•์ธํ•ด๋ณด๋ฉด, .radius2 ๋จน์€ ์ž๋ฆฌ์— class ๊ฐ€ ๋‘ ๊ฐœ๋กœ ๋‚˜์™€ ์žˆ์Œ. 
      --> ๋ฆฌ์•กํŠธ์—์„œ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์คŒ!!
    • ๋”๋ณด๊ธฐ
      ๊ฐœ๋ฐœ์ž๋ชจ๋“œ ํ™•์ธํ•ด๋ณด๊ธฐ!


 

 

๐Ÿ“Global class

  • .module.css ํŒŒ์ผ์—๋Š”       :global(.myheader){ ~~ }      ์ด๋ ‡๊ฒŒ ์ ์–ด์ค˜์•ผ ํ•จ. 
  • jsx ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ๋Š”      <h1 className="myheader" >      ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ !! 
    ์›๋ž˜๋Š” className ์€  {} ์ค‘๊ด„ํ˜ธ ์•ˆ์— ๋„ฃ๋Š”๋ฐ,, global ์€ "" ์•ˆ์— ๋„ฃ์–ด์ค˜์•ผ ํ•จ!!

 

 

import { createRoot } from 'react-dom/client';
import './style1.css';

import styles1 from './style1.module.css';
import styles2 from './style2.module.css';

function App() {
    const style2 = {
        color : 'red',
        backgroundColor : 'yellow',
        padding : '5px'
    }

    return (
        <>
            <h1 className="myheader" >Global๋Š” className="" ์— ๋„ฃ์–ด์•ผํ•จ!</h1>
            <h1 style={ {color : "blue"} }>inline style</h1>
            <h1 style={ style2 }>obj style</h1>
            <h1 className={styles1.title}>module css style <br/> - styles1์˜ .title</h1>
            <h1 className={styles2.title}>module css style <br/> - styles2์˜ .title</h1>
            <h1 className={`${styles2.title} ${styles2.radius}`}>module css style <br/> - style ํด๋ž˜์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋„ฃ์œผ๋ ค๋ฉด?</h1>
            <h1 className={styles2.radius2}>module css style <br/> - composes </h1>
            <h1 className={styles2.radius} style={ {borderRadius:"20px", color:"green"} }>module css style <br/> - class & style </h1>
            <p>๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ</p>
        </>
    );
}

createRoot(document.getElementById('reactCss')).render(
    <App />
);

 

# style1.module.css

.title{
    color: blue;
    padding : 20px;
    background-color: white;
    font-size: large;
    border: 3px solid red;
}

 

 

# style2.module.css

.title{
    color: red;
    padding : 20px;
    background-color: orange;
    font-size: small;
    border: 3px solid yellow;
}

.radius{
    border-radius: 40px;
    background-color: blueviolet;
}

.radius2{
    composes : title;
    border-radius: 20px;
    background-color: gray;
    border-color: black;
    color:black;
}

:global(.myheader) {
    padding:10px 20px;
    font-size: 50px;
    color: white;
    background-color: aqua;
}

 


์ถœ์ฒ˜ : 

[์™•์ดˆ๋ณด ํ™ˆํŽ˜์ด์ง€๋งŒ๋“ค๊ธฐ]

 

์™•์ดˆ๋ณด ํ™ˆํŽ˜์ด์ง€๋งŒ๋“ค๊ธฐ

PHP, HTML, CSS, javascript, MySql, Linux, Python, Docker, Vue.js, Git, Laravel ๋“ฑ์˜ ๊ฐ•์˜ ์˜์ƒ์„ ์˜ฌ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•˜์‹  ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ํ•ด๋‹น ์˜์ƒ์— ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋‹ต๋ณ€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๋ชจ

www.youtube.com

 

 

 


๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค. 

์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”! 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

728x90