Programming/CSS
[CSS] custom properties (variables)
soyeori
2023. 2. 21. 17:44
1. 문제 정의
- FrontMento 과제를 하는 중, class 마다 폰트의 색상을 변경해야 했다.
- 처음에는 class 마다 color를 지정해 주고 주석으로 컬러명을 표기했었는데,
나중에는 컬러값과 색상을 매치하는 것이 헷갈리게 되었고,
: root 에 속성을 정의하여 HTML 문서 전체에 적용할 수 있는 방법을 찾게 되었다.
2. 사용자 지정 속성(custom properties)이란
1) 정의와 특징
- custom properties는 특정한 값을 포함하여 사용자에 의해 정의되는 엔티티이다.
- 코드의 재사용성을 높혀주고, 유지보수에 용이하다.
- 특정 값(px, rgba, hsl)을 적용하는 것보다 의미를 이해할 수 있게 해 준다. (--main-bg-color: white;)
- 미디어퀴리를 적용할 때, 사용자 지정 속성의 배율로 지정하면 되므로 편리하다.
- 사용자 지정 속성은 상속되므로, 특정 클래스의 값을 지정하지 않았을때는 부모 class의 사용자 지정값을 사용한다.
2) CSS 사용자 지정 속성 사용하기
- 기본적은 사용법은 하이픈 2개를 사용하여(--) 속성을 정의해준다.
element {
--main-font-color: brown;
}
- 또한, 흔하게 사용하는 방법은 문서 전체에 적용할 수 있도록 root 클래스에 정의하는 방법이다.
:root {
--main-font-color: brown;
}
- var( ) 함수를 사용하여 사용자 지정 속성을 사용한다.
element {
background-color: var(--main-font-color);
}
3. 코드에 적용하기
- 기존에 작성한 코드로 태그, 클래스마다 필요한 색상 속성을 지정해 주었었다.
body {
background-color: hsl(225, 100%, 94%); /*Pale blue*/
}
.title {
color: hsl(223, 47%, 23%); /*Dark blue*/
}
.summary {
color: hsl(224, 23%, 55%); /*Desaturated blue*/
}
.item {
background-color: hsl(225, 100%, 98%); /*Very pale blue*/
}
.plan #plan-name {
color: hsl(223, 47%, 23%); /*Dark blue*/
}
.plan #plan-cost {
color: hsl(224, 23%, 55%); /*Desaturated blue*/
}
- 사용자 지정 속성 적용하기
:root {
--Pale-blue: hsl(225, 100%, 94%);
--Dark-blue: hsl(223, 47%, 23%);
--Desaturated-blue: hsl(224, 23%, 55%);
--Very-pale-blue: hsl(225, 100%, 98%);
}
body {
background-color: val(--Pale-blue);
}
.title {
color: val(--Dark-blue);
}
.summary {
color: val(--Desaturated-blue);
}
.item {
background-color: val(--Very-pale-blue);
}
.plan #plan-name {
color: val(--Dark-blue);
}
.plan #plan-cost {
color: val(--Desaturated-blue);
}