๐จ 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>
๋๊ธ