๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HTML5 & CSS3/CSS

CSS-Module ์ด๋ž€?

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 10. 16.
๋ฐ˜์‘ํ˜•

๐ŸŽจ CSS Module ์ด๋ž€?

CSS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ณ ์œ ํ•œ ๊ฐ’์œผ๋กœ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ ํด๋ž˜์Šค ์ด๋ฆ„์ด ์ค‘์ฒฉ๋˜๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•ด ์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

 

 

 

์žฅ์ 

  • CSS Module์„ ์ด์šฉํ•˜๋ฉด ํด๋ž˜์Šค๋ช…์ด ์ถฉ๋Œํ•˜๋Š” ๋‹จ์ ์„ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • CSS Module์€ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

 

 

๋ณธ์ธ์€ ๋ฆฌ์•กํŠธ์—์„œ CSS Module์„ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค.
Webpack์˜ css-louder๋กœ ๋ฒˆ๋“ค๋ง์„ ํ•ด์„œ ์‚ฌ์šฉ์„ ํ–ˆ์—ˆ๋‹ค.
์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ๋ชน์‹œ ํŽธ๋ฆฌํ–ˆ๊ณ , ๊ทธ๋™์•ˆ SCSS์—์„  ๋™์ผํ•œ ์Šคํƒ€์ผ์˜ ์†์„ฑ์„ include๋‚˜ mixin์„ ํ™œ์šฉํ•ด์„œ ์ค‘๋ณต์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ๋„ ๊ฒฐ๊ตญ ํด๋ž˜์Šค๋ช…์€ ๋”ฐ๋กœ ์„ ์–ธํ•ด์ค˜์•ผ ๋˜๋Š” ์ ์ด ์•„์‰ฌ์› ๋‹ค.
ํ•˜์ง€๋งŒ CSS Module์€ ์Šคํƒ€์ผ์˜ ์†์„ฑ์„ ํ•œ ๊ณณ์—์„œ๋งŒ ์ง€์ •ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ตฐ๋ฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ์ข‹์•˜๋‹ค.

 

 

 

๐ŸŽจ ์‚ฌ์šฉ๋ฒ•

๐Ÿ‘‰๐Ÿป ํŒŒ์ผ๋ช… ์ง€์ •

ํŒŒ์ผ๋ช…์€ ๋ณดํ†ต ํด๋ž˜์Šค๋ช….module.css ๋ผ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

 

src/Button.module.css

.buttonColor {
  background: black;
  padding: 1rem;
  color: white;
  font-size: 2rem;
}

 

 

๐Ÿ‘‰๐Ÿป ์ ์šฉ๋ฒ•

import๋ฅผ ํ•  ๋•Œ ์•ž์— ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ , ํด๋ž˜์Šค์— ์ ์šฉ์‹œํ‚ฌ ๋•Œ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ CSS module ํด๋ž˜์Šค๋ช…์„ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

 

src/CSSModule.js

import React from 'react';
import styles from './Button.module.css';

const CSSModule = () => {
  return (
    <div className={styles.buttonColor}>
      ํด๋ฆญ
    </div>
  );
};

export default CSSModule;

 

 

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ ์šฉํ•  ๋•Œ๋Š” ๋ฐฑํ‹ฑ(`)์„ ์‚ฌ์šฉํ•œ๋‹ค.

<button className={`${style.buttonColor} ${style.fontColor}`}>๋ฒ„ํŠผ</button>
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€