CSS ์์กด์ฑ ์ ์ธ์ ๋ํ ์ข ํฉ ๊ฐ์ด๋. ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์์ ์คํ์ผ์ํธ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ์ง๋ณด์์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ๊ตฌํฉ๋๋ค.
CSS ์ฌ์ฉ ๊ท์น: ํ์ฅ ๊ฐ๋ฅํ ์คํ์ผ์ํธ๋ฅผ ์ํ ์์กด์ฑ ์ ์ธ ๋ง์คํฐํ๊ธฐ
CSS ํ๋ก์ ํธ์ ๊ท๋ชจ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ๊น๋ํ๊ณ ์ฒด๊ณ์ ์ด๋ฉฐ ์ฑ๋ฅ์ด ์ข์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด ์์กด์ฑ ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ์ค์ํด์ก์ต๋๋ค. ์์กด์ฑ ์ ์ธ์ ์ด์ ์ ๋ง์ถ ์ ์ ์๋ CSS ์ฌ์ฉ ๊ท์น์ ์คํ์ผ์ด ์ ํํ๊ณ ํจ์จ์ ์ผ๋ก ์ ์ฉ๋๋๋ก ๋ณด์ฅํ์ฌ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๊ฒฌ๊ณ ํ ์คํ์ผ์ํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋๋ ๋ชจ๋ฒ ์ฌ๋ก, ๋ฐฉ๋ฒ๋ก ๋ฐ ๋๊ตฌ๋ฅผ ๋ค๋ฃจ๋ฉฐ CSS์ ์์กด์ฑ ์ ์ธ ์์น์ ํ๊ตฌํฉ๋๋ค.
CSS ์์กด์ฑ ์ ์ธ์ด๋ ๋ฌด์์ธ๊ฐ?
CSS ์์กด์ฑ ์ ์ธ์ ์ฌ๋ฌ ๋ค๋ฅธ CSS ํ์ผ ๋๋ ๋ชจ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ ์ด๋ค ์คํ์ผ์ํธ๊ฐ ๋ค๋ฅธ ์คํ์ผ์ํธ์ ์์กดํ๋์ง๋ฅผ ์ง์ ํ์ฌ ์คํ์ผ์ด ์ฌ๋ฐ๋ฅธ ์์๋ก ๋ก๋๋๊ณ ์ถฉ๋์ด ๋ฐฉ์ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฒ ์ด์ค์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์์ ํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํนํ ์ค์ํฉ๋๋ค.
์ ์ ํ ์์กด์ฑ ์ ์ธ์ด ์์ผ๋ฉด CSS๋ ๋ค์ฃฝ๋ฐ์ฃฝ์ด ๋์ด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์์ต๋๋ค:
- ๋ช ์์ฑ ์ถฉ๋: ๋ค๋ฅธ ํ์ผ์ ์คํ์ผ์ด ์๊ธฐ์น ์๊ฒ ์๋ก๋ฅผ ๋ฎ์ด์ฐ๋ ๋ฌธ์ .
- ๋ก๋ฉ ์์ ๋ฌธ์ : ์คํ์ผ์ด ์๋ชป๋ ์์๋ก ์ ์ฉ๋์ด ๋ ๋๋ง์ด ์ฌ๋ฐ๋ฅด์ง ์๊ฒ ๋๋ ๋ฌธ์ .
- ์ ์ง๋ณด์์ ์ด๋ ค์: ๋ถ๋ถ๋ช ํ ์์กด์ฑ์ผ๋ก ์ธํด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ดํดํ๊ณ ์์ ํ๊ธฐ ์ด๋ ค์์ง๋ ๋ฌธ์ .
- ์ฑ๋ฅ ๋ฌธ์ : ๋ถํ์ํ ์คํ์ผ์ด ๋ก๋๋์ด ํ์ด์ง ๋ก๋ ์๊ฐ์ด ๋๋ ค์ง๋ ๋ฌธ์ .
์์กด์ฑ ์ ์ธ์ด ์ค์ํ ์ด์ ๋ ๋ฌด์์ธ๊ฐ?
์์กด์ฑ ์ ์ธ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ ์ง๋ณด์์ฑ ํฅ์: ๋ช ํํ ์์กด์ฑ์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ดํดํ๊ณ ์์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์ถฉ๋ ๊ฐ์: ์์กด์ฑ์ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ฉด ์คํ์ผ์ด ์๊ธฐ์น ์๊ฒ ์๋ก๋ฅผ ๋ฎ์ด์ฐ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ์ฑ๋ฅ ํฅ์: ํ์ํ ์คํ์ผ๋ง ๋ก๋ํ์ฌ ํ์ด์ง ๋ก๋ ์๊ฐ์ ๊ฐ์ ํฉ๋๋ค.
- ํ์ฅ์ฑ ์ฆ๊ฐ: ์ ์ ์๋ ์์กด์ฑ์ ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ํ์ฅํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ํ์ ๊ฐ์ : ๋ช ํํ ์์กด์ฑ์ ๊ฐ๋ฐ์ ๊ฐ์ ํ์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
CSS ์์กด์ฑ ์ ์ธ ๊ตฌํ ์ ๋ต
CSS ์์กด์ฑ ์ ์ธ์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ ๋ต์ด ์์ผ๋ฉฐ, ๊ฐ ์ ๋ต์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ์๋ ์์กด์ฑ ๊ด๋ฆฌ
๊ฐ์ฅ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ HTML ํ์ผ์ ์ฌ๋ฐ๋ฅธ ์์๋ก CSS ํ์ผ์ ํฌํจํ์ฌ ์๋์ผ๋ก ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์
๋๋ค. ์ด๋ <link>
ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค.
์์:
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="components/button.css">
<link rel="stylesheet" href="components/form.css">
<link rel="stylesheet" href="layout/header.css">
<link rel="stylesheet" href="layout/footer.css">
<link rel="stylesheet" href="pages/home.css">
<link rel="stylesheet" href="pages/about.css">
<link rel="stylesheet" href="theme.css">
์ฅ์ :
- ๊ตฌํ์ด ๊ฐ๋จํฉ๋๋ค.
- ์ธ๋ถ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๋จ์ :
- ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ง๋ฃจํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
- ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
- ์์กด์ฑ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋ ์ ๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
2. CSS ์ ์ฒ๋ฆฌ๊ธฐ (Sass, Less, Stylus)
Sass, Less, Stylus์ ๊ฐ์ CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ @import
์ง์๋ฌธ ๋ฐ ๋ถ๋ถ ํ์ผ๊ณผ ๊ฐ์ ์์กด์ฑ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด CSS๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ํ์ผ๋ก ๋๋๊ณ ์ด๋ฅผ ๋ฉ์ธ ์คํ์ผ์ํธ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์์ (Sass):
// _reset.scss
body {
margin: 0;
padding: 0;
}
// _base.scss
body {
font-family: Arial, sans-serif;
font-size: 16px;
}
// _button.scss
.button {
background-color: blue;
color: white;
padding: 10px 20px;
border: none;
}
// main.scss
@import "reset";
@import "base";
@import "components/button";
์ฅ์ :
- ์ฝ๋ ๊ตฌ์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋ฉ๋๋ค.
- ๋ณ์, ๋ฏน์ค์ธ ๋ฐ ๊ธฐํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
- ์๋ ์์กด์ฑ ํด๊ฒฐ.
๋จ์ :
- ์๋ก์ด ๊ตฌ๋ฌธ์ ๋ฐฐ์์ผ ํฉ๋๋ค.
- ๋น๋ ํ๋ก์ธ์ค์ ์ปดํ์ผ ๋จ๊ณ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- ์ ์คํ๊ฒ ์ฌ์ฉํ์ง ์์ผ๋ฉด CSS ํ์ผ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ์ ์์ต๋๋ค. CSS ์ ์ฒ๋ฆฌ๊ธฐ์
@import
์ง์๋ฌธ์ ์ข ์ข ๋ชจ๋ ๊ฐ์ ธ์จ ํ์ผ์ ๋จ์ผ CSS ํ์ผ๋ก ๋ฒ๋ค๋งํ์ฌ ์ด๊ธฐ ๋ค์ด๋ก๋ ํฌ๊ธฐ๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ๋ ๋์ ์ฑ๋ฅ์ ์ํด ๋ถ๋ถ ๊ฐ์ ธ์ค๊ธฐ ๋๋ ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
3. CSS ๋ชจ๋
CSS ๋ชจ๋์ ๋ชจ๋์์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ CSS๋ฅผ ์์ฑํ๊ธฐ ์ํ ์์คํ ์ ๋๋ค. ๊ฐ CSS ํ์ผ์ ๋ํด ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ์ ์๋์ผ๋ก ์์ฑํ์ฌ ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ์คํ์ผ์ด ์ํ ์ปดํฌ๋ํธ์ ๋ฒ์๊ฐ ์ง์ ๋๋๋ก ํฉ๋๋ค.
์์:
// button.module.css
.button {
background-color: blue;
color: white;
padding: 10px 20px;
border: none;
}
// Component.jsx (๋ฆฌ์กํธ)
import styles from './button.module.css';
function Button() {
return <button className={styles.button}>Click Me</button>;
}
export default Button;
์ฅ์ :
- ์ด๋ฆ ์ถฉ๋์ ์ ๊ฑฐํฉ๋๋ค.
- ๋ชจ๋์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๊ฐ์ ํฉ๋๋ค.
- ๊ด์ฌ์ฌ์ ๋ช ํํ ๋ถ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋จ์ :
- Webpack์ด๋ Parcel๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
- ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์๋ณด๋ค ์ค์ ์ด ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
- ๊ธฐ์กด CSS ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์ ์์ต๋๋ค.
4. CSS-in-JS
CSS-in-JS๋ JavaScript ์ฝ๋์์ ์ง์ CSS๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ ๋๋ค. Styled Components, Emotion, JSS์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ ์์ฑ์ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์์ (Styled Components):
import styled from 'styled-components';
const Button = styled.button`
background-color: blue;
color: white;
padding: 10px 20px;
border: none;
`;
function MyComponent() {
return <Button>Click Me</Button>;
}
export default MyComponent;
์ฅ์ :
- JavaScript์์ ๊ธด๋ฐํ ํตํฉ.
- ์๋ ์์กด์ฑ ๊ด๋ฆฌ.
- ์ปดํฌ๋ํธ props์ ๊ธฐ๋ฐํ ๋์ ์คํ์ผ๋ง.
๋จ์ :
- JavaScript ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์๋นํ ๋ณ๊ฒฝ์ด ํ์ํ ์ ์์ต๋๋ค.
- CSS ์คํ์ผ ๋๋ฒ๊น ์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
5. ๋น๋ ๋๊ตฌ (Webpack, Parcel, Rollup)
Webpack, Parcel, Rollup๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ CSS ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ ํ๋ก๋์ ์ฉ CSS ํ์ผ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- CSS ๋ชจ๋ ์ง์: CSS ํ์ผ์ ๋ํ ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
- CSS ์ถ์(Minification): ๊ณต๋ฐฑ๊ณผ ์ฃผ์์ ์ ๊ฑฐํ์ฌ CSS ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
- CSS ์ถ์ถ: JavaScript ๋ฒ๋ค์์ CSS ํ์ผ์ ์ถ์ถํฉ๋๋ค.
- ์ฝ๋ ๋ถํ (Code Splitting): ๋ ๋น ๋ฅธ ๋ก๋ฉ์ ์ํด CSS ํ์ผ์ ๋ ์์ ์ฒญํฌ๋ก ๋ถํ ํฉ๋๋ค.
- ํธ๋ฆฌ ์์ดํน(Tree Shaking): ์ฌ์ฉํ์ง ์๋ CSS ์คํ์ผ์ ์ ๊ฑฐํฉ๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ CSS ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
CSS ์์กด์ฑ ์ ์ธ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
CSS ์์กด์ฑ ์ ์ธ์ ๊ตฌํํ ๋ ๋ฐ๋ผ์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ผ๊ด๋ ํ์ผ ์ด๋ฆ ๊ท์น ์ฌ์ฉ: ์ด๋ ๊ฒ ํ๋ฉด CSS ํ์ผ์ ๋ ์ฝ๊ฒ ์๋ณํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,
component-name.module.css
๋๋component-name.scss
์ ๊ฐ์ ๊ท์น์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - CSS ํ์ผ์ ๋
ผ๋ฆฌ์ ๋๋ ํ ๋ฆฌ๋ก ๊ตฌ์ฑ: ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฒด๊ณ์ ์ด๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด,
components
,layout
,pages
์ ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ์ ์ญ ์คํ์ผ ํผํ๊ธฐ: ์ ์ญ ์คํ์ผ์ ์ด๋ฆ ์ถฉ๋๊ณผ ์๊ธฐ์น ์์ ๋์์ ์ ๋ฐํ ์ ์์ต๋๋ค. CSS ๋ชจ๋ ๋๋ CSS-in-JS๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ก ๋ฒ์๋ฅผ ์ ํํ์ธ์.
- CSS ๋ณ์ ์ฌ์ฉ: CSS ๋ณ์(์ฌ์ฉ์ ์ง์ ์์ฑ์ด๋ผ๊ณ ๋ ํจ)๋ฅผ ์ฌ์ฉํ๋ฉด CSS์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- CSS ๋ฆฐํฐ ์ฌ์ฉ: CSS ๋ฆฐํฐ๋ CSS ์ฝ๋์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. Stylelint์ ๊ฐ์ ๋ฆฐํฐ๋ ์ฝ๋ฉ ํ์ค๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- CSS ํ์ผ์ ์๊ณ ์ง์ค์ ์ผ๋ก ์ ์ง: ์์ CSS ํ์ผ์ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ํฐ CSS ํ์ผ์ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฒญํฌ๋ก ๋๋์ธ์.
- CSS ์ํคํ ์ฒ ๋ฐฉ๋ฒ๋ก ์ฌ์ฉ: BEM(๋ธ๋ก, ์๋ฆฌ๋จผํธ, ์์ ์), OOCSS(๊ฐ์ฒด ์งํฅ CSS), SMACSS(ํ์ฅ ๊ฐ๋ฅํ ๋ชจ๋์ CSS ์ํคํ ์ฒ)์ ๊ฐ์ ๋ฐฉ๋ฒ๋ก ์ CSS ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๊ณ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- CSS ์์กด์ฑ ๋ฌธ์ํ: ์ฃผ์์ด๋ ๋ฌธ์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ CSS ํ์ผ ๊ฐ์ ์์กด์ฑ์ ์ค๋ช ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
- CSS ํ ์คํธ: CSS ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ์ธ์. ์ด๋ ํ๊ท๋ฅผ ๋ฐฉ์งํ๊ณ ์น์ฌ์ดํธ๊ฐ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์์ ์ผ๊ด๋๊ฒ ๋ณด์ด๋๋ก ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ์ ์ํด CSS ์ต์ ํ: CSS ํ์ผ์ ์ถ์ํ๊ณ ์ฌ์ฉํ์ง ์๋ ์คํ์ผ์ ์ ๊ฑฐํ๋ฉฐ ์ฝ๋ ๋ถํ ๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ํ์ด์ง ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ์ธ์.
CSS ์ํคํ ์ฒ ๋ฐฉ๋ฒ๋ก
CSS ์ํคํ ์ฒ ๋ฐฉ๋ฒ๋ก ์ ์ ํํ๋ฉด ์คํ์ผ์ํธ์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
BEM (๋ธ๋ก, ์๋ฆฌ๋จผํธ, ์์ ์)
BEM์ ๋ชจ๋์์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ CSS ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ์ด๋ฆ ์ง์ ๊ท์น์ ๋๋ค. ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- ๋ธ๋ก(Block): ๊ทธ ์์ฒด๋ก ์๋ฏธ๊ฐ ์๋ ๋ ๋ฆฝ์ ์ธ ์ํฐํฐ์ ๋๋ค.
- ์๋ฆฌ๋จผํธ(Element): ๋ ๋ฆฝ์ ์ธ ์๋ฏธ๊ฐ ์๊ณ ๋ธ๋ก์ ๋ฌธ๋งฅ์ ์ผ๋ก ๋ฌถ์ฌ ์๋ ๋ธ๋ก์ ์ผ๋ถ์ ๋๋ค.
- ์์ ์(Modifier): ๋ชจ์์ด๋ ๋์์ ๋ณ๊ฒฝํ๋ ๋ธ๋ก ๋๋ ์๋ฆฌ๋จผํธ์ ํ๋๊ทธ์ ๋๋ค.
์์:
.button { /* ๋ธ๋ก */
/* ๋ฒํผ ์คํ์ผ */
}
.button__text { /* ์๋ฆฌ๋จผํธ */
/* ๋ฒํผ ํ
์คํธ ์คํ์ผ */
}
.button--primary { /* ์์ ์ */
/* ๊ธฐ๋ณธ ๋ฒํผ ์คํ์ผ */
}
์ฅ์ :
- ๋ช ํํ๊ณ ์ผ๊ด๋ ์ด๋ฆ ์ง์ ๊ท์น.
- ๋ชจ๋์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ์ฅ๋ คํฉ๋๋ค.
- ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ์ต๋๋ค.
๋จ์ :
- ๊ธธ๊ณ ์ฅํฉํ ํด๋์ค ์ด๋ฆ์ด ๋ ์ ์์ต๋๋ค.
- ๋ฐฉ๋ฒ๋ก ์ ์ต์ํ์ง ์์ ๊ฐ๋ฐ์์๊ฒ๋ ํ์ต ๊ณก์ ์ด ํ์ํ ์ ์์ต๋๋ค.
OOCSS (๊ฐ์ฒด ์งํฅ CSS)
OOCSS๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐ ์ค์ ์ ๋ CSS ์ํคํ ์ฒ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ๋ ๊ฐ์ง ํต์ฌ ์์น์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค:
- ๊ตฌ์กฐ์ ์คํจ์ ๋ถ๋ฆฌ: ๊ฐ์ฒด์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ๋ชจ์๊ณผ ๋ถ๋ฆฌํฉ๋๋ค.
- ์ปจํ ์ด๋์ ์ฝํ ์ธ ์ ๋ถ๋ฆฌ: ์ปจํ ์ด๋์ ์ ์ฉ๋๋ ์คํ์ผ๊ณผ ์ปจํ ์ด๋ ๋ด์ ์ฝํ ์ธ ์ ์ ์ฉ๋๋ ์คํ์ผ์ ๋ถ๋ฆฌํฉ๋๋ค.
์์:
.module { /* ๊ตฌ์กฐ */
width: 100%;
margin-bottom: 20px;
}
.module-header { /* ์คํจ */
background-color: #f0f0f0;
padding: 10px;
}
.module-content { /* ์ฝํ
์ธ */
padding: 20px;
}
์ฅ์ :
- ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ฅ๋ คํฉ๋๋ค.
- ์ฝ๋ ์ค๋ณต์ ์ค์ ๋๋ค.
- ๊ด์ฌ์ฌ์ ๋ช ํํ ๋ถ๋ฆฌ๋ฅผ ์ด์งํฉ๋๋ค.
๋จ์ :
- ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ก ๋ณด๋ค ๊ตฌํ์ด ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์๋นํ ๋ณ๊ฒฝ์ด ํ์ํ ์ ์์ต๋๋ค.
SMACSS (ํ์ฅ ๊ฐ๋ฅํ ๋ชจ๋์ CSS ์ํคํ ์ฒ)
SMACSS๋ CSS ๊ท์น์ ๋ค์ฏ ๊ฐ์ง ์ ํ์ผ๋ก ๋ถ๋ฅํ๋ CSS ์ํคํ ์ฒ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค:
- ๋ฒ ์ด์ค(Base): HTML ์์์ ๊ธฐ๋ณธ ์คํ์ผ์ ๋๋ค.
- ๋ ์ด์์(Layout): ํ์ด์ง์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์คํ์ผ์ ๋๋ค.
- ๋ชจ๋(Module): ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ์ ๋๋ค.
- ์ํ(State): ๋ชจ๋์ ์ํ(์: ํ์ฑ, ๋นํ์ฑ)๋ฅผ ์ ์ํ๋ ์คํ์ผ์ ๋๋ค.
- ํ ๋ง(Theme): ์น์ฌ์ดํธ์ ์๊ฐ์ ๋ชจ์์ ์ ์ํ๋ ์คํ์ผ์ ๋๋ค.
์์:
/* ๋ฒ ์ด์ค */
body {
font-family: Arial, sans-serif;
}
/* ๋ ์ด์์ */
#header {
width: 100%;
}
/* ๋ชจ๋ */
.button {
background-color: blue;
color: white;
}
/* ์ํ */
.button:hover {
background-color: darkblue;
}
/* ํ
๋ง */
body {
background-color: #fff;
color: #000;
}
์ฅ์ :
- CSS ์ฝ๋์ ๋ํ ๋ช ํํ๊ณ ์ฒด๊ณ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ์ต๋๋ค.
- ํ์ฅ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ์ด์งํฉ๋๋ค.
๋จ์ :
- ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ก ๋ณด๋ค ์ ์ฐ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
- ๋ฐฉ๋ฒ๋ก ์ ์ต์ํ์ง ์์ ๊ฐ๋ฐ์์๊ฒ๋ ํ์ต ๊ณก์ ์ด ํ์ํ ์ ์์ต๋๋ค.
๊ตญ์ ํ(i18n) ๊ณ ๋ ค์ฌํญ
๊ตญ์ ์ ์ธ ์ฌ์ฉ์๋ฅผ ์ํด CSS๋ฅผ ๊ฐ๋ฐํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ(RTL) ์ธ์ด: ์๋์ด์ ํ๋ธ๋ฆฌ์ด ๊ฐ์ ์ธ์ด๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์๋๋ค. ์ด๋ฌํ ์ธ์ด๋ฅผ ์ง์ํ๋ ค๋ฉด
direction: rtl
๋ฐunicode-bidi: bidi-override
์ ๊ฐ์ CSS ์์ฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ ๋์ RTL ์ง์์ ์ํด ๋ฌผ๋ฆฌ์ ์์ฑ(์: `margin-left`) ๋์ ๋ ผ๋ฆฌ์ ์์ฑ(์: `margin-inline-start`) ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์. - ๊ธ๊ผด ์ ํ: ๋ค์ํ ๋ฌธ์ ๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๋ ๊ธ๊ผด์ ์ ํํ์ธ์. ์ฌ์ฉ์์ ์ธ์ด์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ก๋๋ ์ ์๋ ์น ๊ธ๊ผด ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
- ํ ์คํธ ํ์ฅ: ๋ค๋ฅธ ์ธ์ด๋ ๋์ผํ ์ฝํ ์ธ ๋ฅผ ํ์ํ๋ ๋ฐ ๋ค๋ฅธ ์์ ๊ณต๊ฐ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ ์ด์์์ด ํ ์คํธ ํ์ฅ์ ์์ฉํ ์ ์์ ๋งํผ ์ ์ฐํ๊ฒ ๋์์ธํ์ธ์.
- ์ซ์ ๋ฐ ๋ ์ง ํ์: ์ซ์ ๋ฐ ๋ ์ง ํ์์ ๋ฌธํ๊ถ๋ง๋ค ๋ค๋ฆ ๋๋ค. ๊ฐ ๋ก์ผ์ผ์ ๋ง๊ฒ ์ซ์์ ๋ ์ง๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ํํ๋ ค๋ฉด `Intl`๊ณผ ๊ฐ์ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋ฌธํ์ ๋ฏผ๊ฐ์ฑ: ์์, ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ์๊ฐ์ ์์๋ฅผ ์ ํํ ๋ ๋ฌธํ์ ์ฐจ์ด๋ฅผ ์ผ๋์ ๋์ธ์. ํ ๋ฌธํ์์ ์์ฉ ๊ฐ๋ฅํ ๊ฒ์ด ๋ค๋ฅธ ๋ฌธํ์์๋ ๋ถ์พํ ์ ์์ต๋๋ค.
์์ (RTL ์ง์):
body {
direction: rtl;
unicode-bidi: bidi-override;
}
.container {
margin-right: auto; /* RTL์์๋ margin-left๊ฐ ๋ฉ๋๋ค */
margin-left: 0; /* RTL์์๋ margin-right๊ฐ ๋ฉ๋๋ค */
}
/* ๋
ผ๋ฆฌ์ ์์ฑ ์ฌ์ฉ */
.container {
margin-inline-start: auto;
margin-inline-end: 0;
}
์ ๊ทผ์ฑ(a11y) ๊ณ ๋ ค์ฌํญ
์ ๊ทผ์ฑ์ ์น ๊ฐ๋ฐ์ ํ์์ ์ธ ์ธก๋ฉด์ด๋ฉฐ, CSS๋ ์ ๊ทผ์ฑ ๋์ ์น์ฌ์ดํธ๋ฅผ ๋ง๋๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ค์์ CSS์ ๋ํ ๋ช ๊ฐ์ง ์ ๊ทผ์ฑ ๊ณ ๋ ค์ฌํญ์ ๋๋ค:
- ์๋งจํฑ HTML:
<header>
,<nav>
,<article>
,<footer>
์ ๊ฐ์ ์๋งจํฑ HTML ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ์ ๊ตฌ์กฐ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ์ธ์. - ์์ ๋๋น: ํ ์คํธ์ ๋ฐฐ๊ฒฝ์ ๊ฐ์ ์ถฉ๋ถํ ์์ ๋๋น๊ฐ ์๋์ง ํ์ธํ์ธ์. WebAIM ์์ ๋๋น ๊ฒ์ฌ๊ธฐ์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์กฐํฉ์ด ์ ๊ทผ์ฑ ํ์ค์ ์ถฉ์กฑํ๋์ง ํ์ธํ์ธ์. WCAG(์น ์ฝํ ์ธ ์ ๊ทผ์ฑ ๊ฐ์ด๋๋ผ์ธ)๋ ์ผ๋ฐ ํ ์คํธ์ ๊ฒฝ์ฐ ์ต์ 4.5:1, ํฐ ํ ์คํธ์ ๊ฒฝ์ฐ 3:1์ ๋ช ์๋น๋ฅผ ๊ถ์ฅํฉ๋๋ค.
- ์ด์ ํ์๊ธฐ: ๋งํฌ ๋ฐ ๋ฒํผ๊ณผ ๊ฐ์ ์ํธ์์ฉ ์์์ ๋ํด ๋ช ํํ๊ณ ๋์ ๋๋ ์ด์ ํ์๊ธฐ๋ฅผ ์ ๊ณตํ์ธ์. ์ด๋ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ์ด๋ค ์์์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋์ฒด ํ
์คํธ:
alt
์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ์ธ์. ์ด๋ฅผ ํตํด ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ์๊ฐ ์ฅ์ ์ธ ์ฌ์ฉ์์๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ค๋ช ํ ์ ์์ต๋๋ค. - ํค๋ณด๋ ํ์: ๋ชจ๋ ์ํธ์์ฉ ์์๊ฐ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๋์ง ํ์ธํ์ธ์.
tabindex
์์ฑ์ ์ฌ์ฉํ์ฌ ์์๊ฐ ์ด์ ์ ๋ฐ๋ ์์๋ฅผ ์ ์ดํ์ธ์. - ARIA ์์ฑ: ARIA(Accessible Rich Internet Applications) ์์ฑ์ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ๋์์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ณด์กฐ ๊ธฐ์ ์ ์ ๊ณตํ์ธ์. ARIA ์์ฑ์ ์ ์คํ๊ฒ ์ฌ์ฉํ๊ณ ์๋งจํฑ HTML์ ๋ณด์ํ๊ธฐ ์ํด ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ์ธ์.
- ์ฝํ ์ธ ์ CSS ์ฌ์ฉ ํผํ๊ธฐ: CSS๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๋ ๊ฒ์ ํผํ์ธ์. ์ด ์ฝํ ์ธ ๋ ์คํฌ๋ฆฐ ๋ฆฌ๋์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ค๋ฉด HTML ์์๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋ณด์กฐ ๊ธฐ์ ๋ก ํ ์คํธ: ์คํฌ๋ฆฐ ๋ฆฌ๋์ ๊ฐ์ ๋ณด์กฐ ๊ธฐ์ ๋ก ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ์ฌ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋์ง ํ์ธํ์ธ์.
์์ (์์ ๋๋น):
.button {
background-color: #007bff; /* ํ๋์ */
color: #fff; /* ํฐ์ */
}
์ด ์์์์ ํ๋์ ๋ฐฐ๊ฒฝ๊ณผ ํฐ์ ํ ์คํธ ๊ฐ์ ์์ ๋๋น๋ ์ ๊ทผ์ฑ ํ์ค์ ์ถฉ์กฑํฉ๋๋ค.
๋๊ตฌ ๋ฐ ๋ฆฌ์์ค
๋ค์์ CSS ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ CSS ํ์ง์ ๊ฐ์ ํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ ๋ฐ ๋ฆฌ์์ค์ ๋๋ค:
- Stylelint: ์ฝ๋ฉ ํ์ค๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ฐ์ ํ๋ CSS ๋ฆฐํฐ์ ๋๋ค.
- Prettier: CSS ์ฝ๋๋ฅผ ์ผ๊ด๋ ์คํ์ผ๋ก ์๋ ์์ ์ง์ ํ๋ ์ฝ๋ ํฌ๋งทํฐ์ ๋๋ค.
- CSS Modules: ๋ชจ๋์์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ CSS๋ฅผ ์์ฑํ๊ธฐ ์ํ ์์คํ ์ ๋๋ค.
- Styled Components, Emotion, JSS: CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- Webpack, Parcel, Rollup: CSS ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ CSS ํ์ผ์ ์ต์ ํํ๊ธฐ ์ํ ๋น๋ ๋๊ตฌ์ ๋๋ค.
- WebAIM Color Contrast Checker: ์์ ๋๋น ๋น์จ์ ํ์ธํ๋ ๋๊ตฌ์ ๋๋ค.
- WCAG (์น ์ฝํ ์ธ ์ ๊ทผ์ฑ ๊ฐ์ด๋๋ผ์ธ): ์น ์ฝํ ์ธ ๋ฅผ ๋ ์ ๊ทผ์ฑ ์๊ฒ ๋ง๋ค๊ธฐ ์ํ ๊ฐ์ด๋๋ผ์ธ ์ธํธ์ ๋๋ค.
- MDN Web Docs: ์น ๊ฐ๋ฐ ๋ฌธ์๋ฅผ ์ํ ํฌ๊ด์ ์ธ ๋ฆฌ์์ค์ ๋๋ค.
- Can I use...: ๋ค์ํ CSS ๊ธฐ๋ฅ์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์น์ฌ์ดํธ์ ๋๋ค.
๊ฒฐ๋ก
CSS ์์กด์ฑ ์ ์ธ์ ๋ง์คํฐํ๋ ๊ฒ์ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋ฉฐ ์ฑ๋ฅ์ด ์ข์ ์คํ์ผ์ํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด ๊ฐ์ด๋์ ์ค๋ช ๋ ๋ค์ํ ์ ๋ต๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ CSS ํ๋ก์ ํธ์ ์์กด์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ดํด, ์์ ๋ฐ ํ์ฅ์ด ์ฌ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ ์์กด์ฑ ๊ด๋ฆฌ, CSS ์ ์ฒ๋ฆฌ๊ธฐ, CSS ๋ชจ๋, CSS-in-JS ๋๋ ๋น๋ ๋๊ตฌ ์ค ์ด๋ค ๊ฒ์ ์ ํํ๋ , ํต์ฌ์ ํ๊ณผ ํ๋ก์ ํธ์ ๋ง๋ ๋ช ํํ๊ณ ์ผ๊ด๋ ์์กด์ฑ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ํ๋ฆฝํ๋ ๊ฒ์ ๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด CSS๋ฅผ ๊ฐ๋ฐํ ๋ ๊ตญ์ ํ ๋ฐ ์ ๊ทผ์ฑ์ ๊ณ ๋ คํ์ฌ ์น์ฌ์ดํธ๊ฐ ๋ชจ๋ ์ฌ๋์๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์์น์ ์์ฉํจ์ผ๋ก์จ ์ฒด๊ณ์ ์ด์ง ์์ CSS์ ํจ์ ์ ํผํ๊ณ ์ฅ๊ธฐ์ ์ธ ์ฑ๊ณต์ ์ํ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๋ต์ ์กฐํฉํ์ฌ ๊ตฌํํ์ฌ ์ด์ ์ ๊ทน๋ํํ๊ณ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ์ ๋ง๊ฒ ์ ๊ทผ ๋ฐฉ์์ ์กฐ์ ํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์๋ฅผ ๋ค์ด, ๋ณ์ ๋ฐ ๋ฏน์ค์ธ ๊ธฐ๋ฅ์ ์ํด Sass์ ๊ฐ์ CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ปดํฌ๋ํธ ์์ค์ ๋ฒ์ ์ง์ ์ ๋ณด์ฅํ๊ธฐ ์ํด CSS ๋ชจ๋์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
์คํํ๊ณ ์์ ๊ณผ ํ์ ๊ฐ์ฅ ์ ํฉํ ๊ฒ์ ์ฐพ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง์ธ์. CSS์ ์ธ๊ณ๋ ๋์์์ด ์งํํ๋ฏ๋ก ์ต์ ํธ๋ ๋์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ง์์ ์ผ๋ก ํ์ตํ๊ณ CSS ๊ธฐ์ ์ ์ฐ๋งํจ์ผ๋ก์จ ์คํ์ผ์ํธ๊ฐ ์์ผ๋ก ๋ช ๋ ๋์ ๊นจ๋ํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.