102 lines
2.1 KiB
Markdown
102 lines
2.1 KiB
Markdown
# CSS 변수 (Custom Properties)
|
|
|
|
CSS 변수(커스텀 프로퍼티)는 재사용 가능한 값을 저장하고 활용할 수 있는 기능이야.
|
|
반복되는 색상, 크기, 간격 등을 변수로 선언하면 유지보수가 쉬워져!
|
|
|
|
CSS 변수는 `--`(대시 두 개)로 시작하는 이름을 사용해 정의해.
|
|
`var(--변수이름)` 형식으로 값을 가져올 수 있어!
|
|
|
|
```css
|
|
:root {
|
|
--main-color: blue;
|
|
--font-size: 18px;
|
|
}
|
|
p {
|
|
color: var(--main-color);
|
|
font-size: var(--font-size);
|
|
}
|
|
/* --main-color 변수에 저장된 값을 가져와서 텍스트 색상으로 사용! */
|
|
```
|
|
|
|
## CSS 변수 선언 및 사용법
|
|
|
|
### :root에서 전역 변수 선언
|
|
:root를 사용하면 모든 요소에서 변수 사용 가능!
|
|
```css
|
|
:root {
|
|
--primary-color: #3498db;
|
|
--secondary-color: #2ecc71;
|
|
--text-color: #333;
|
|
}
|
|
```
|
|
### 특정 요소에서 로컬 변수 선언
|
|
특정 요소 안에서만 변수 적용 가능!
|
|
```css
|
|
.card {
|
|
--card-bg: lightgray; /* 이 변수는 .card 내부에서만 사용 가능! */
|
|
background-color: var(--card-bg);
|
|
}
|
|
```
|
|
|
|
### var(--변수명)으로 변수 사용
|
|
```css
|
|
h1 {
|
|
color: var(--primary-color);
|
|
}
|
|
p {
|
|
color: var(--text-color);
|
|
}
|
|
```
|
|
|
|
## CSS 변수의 장점
|
|
* 재사용 가능 : 여러 곳에서 동일한 스타일을 적용 가능
|
|
* 유지보수 쉬움 : 변수 값만 변경하면 전체 스타일 수정 가능
|
|
* 반응형 디자인 활용 가능 : calc(), media query와 함께 사용 가능
|
|
|
|
|
|
|
|
|
|
## 예시
|
|
### 다크 모드
|
|
```css
|
|
:root {
|
|
--bg-color: white;
|
|
--text-color: black;
|
|
}
|
|
|
|
.dark-mode {
|
|
--bg-color: black;
|
|
--text-color: white;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--bg-color);
|
|
color: var(--text-color);
|
|
}
|
|
/* .dark-mode 클래스를 추가하면 다크 모드 자동 적용! */
|
|
```
|
|
### 반응형 디자인
|
|
```css
|
|
:root {
|
|
--font-size: 16px;
|
|
}
|
|
@media (max-width: 768px) {
|
|
:root {
|
|
--font-size: 14px;
|
|
}
|
|
}
|
|
p {
|
|
font-size: var(--font-size);
|
|
}
|
|
/* 화면 크기에 따라 자동으로 폰트 크기 조절! */
|
|
```
|
|
### calc()와 함께 사용
|
|
```css
|
|
:root {
|
|
--base-size: 10px;
|
|
}
|
|
.box {
|
|
width: calc(var(--base-size) * 5); /* 50px */
|
|
}
|
|
```
|