CSS변수선언

By Sera on

변수는 대소문자를 구분하며 변수값은 하위 요소에 상속된다. CSS에서 변수를 선언할 때는 :root라는 가상선택자를 최상위 엘리먼트에 선언하여 모든 요소에서 변수를 사용할 수 있도록 한다.(대표적으로 부트스트랩) 각 요소에 변수를 지정해도 상관은 없지만, 굳이 변수를 사용하는 이유가 없어보인다. 변수에는 css 값이 아닌, 순수한 데이터 값을 넣어 사용한다.

1.변수 선언

:root{ /* 어디서나 읽을 수 있도록 함 */ 
	--pink: pink; /* 변수명: 값; */ 
	--red:; /*오류*/
	--blue: ; /*공백이 있으니 변수 선언*/
	--gray: #ccc;
	--yellow: yellow;
	--green: green;
	--font: 20;
}

.variable{
	background-color:var(--gray); /* 속성 : var(--변수명); */
}
.Q1{
	padding:30px;
	background: var(--pink, hotpink); /* 속성: var(--변수명, default 값); */
	color: var(--green, var(--gray, var(--yellow, yellow))); /*default값도 변수로 삽입 가능하다.*/
} 
.Q2{
	background-color: red; /*css 변수를 지원하지 않는 브라우저(ex. 익스플로러)에서 적용 */
	background-color: var(--yellow, orange); /* 변수 값(yellow)이 지정되지 않은 경우 default값인 orange */
}
.Q3{
    background-color: green;
    background-color: var(--font, orange);
	/*
	font: 20이니, background-color:20;이 되어버린다.

	이처럼 올바르지 않은 값이 들어갈 경우 속성의 default 값으로 돌아간다. (background-color: transparent)
	--font 뒤의 orange는 변수 값이 없을 때의 대체용 값이다. 
	지금은 변수 값이 있지만, 속성에 맞는 값이 아닌 경우이므로 해당이 없다.
	*/
}

Q1. CSS 변수 사용하기

Q2. CSS 변수를 적용할 수 없을 때 방어코드
익스플로러에서는 red, 그 외의 브라우저는 yellow

Q3. 오류 : 배경이 투명함

2.활용하기

:root{
	--img: url("/assets/images/7.jpg");
	--color2: green;
	--color2: var(--color2); /*color2는 "var(--color2)"의 값을 가진다*/
	--size: 8em;
}

.Q4{
	background: var(--img); 
}

.Q5{
	height: var(--size);
}
.Q6{
	height: calc(var(--size) + 1em);
}

.Q7{
    background: blue;
    background: var(--color2, orange);
}

Q4. 배경에 이미지 넣어보자

Q5. height : 8em

Q6. height : 8em + 1em

Q7. 변수 재정립