본문 바로가기

웹언어/CSS3

[CSS3강좌] 38강 CSS의 변수 - var() 함수

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. CSS 변수 - var()

- 변수라는 것은 컴퓨터 언어에서 값을 한 개 저장하는 공간을 의미합니다.

- CSS의 변수도 값을 저장하는 공간입니다.  변수를 사용하는 이유는 동일한 값을 매번 기억해서 작성하면 어렵기 때문입니다. 특히, 색상 코드처럼 좀처럼 외우기 힘든 것을 문자 화한다면 쉽게 사용 가능하겠죠?

- 이때 CSS에서는 var()라는 함수를 사용합니다. 

- CSS변수는 DOM에 액세스 할 수 있고, 전역/지역으로 선언할 수 있습니다.

- 자바스크립트에서도 미디어 쿼리에서도 변수를 변경할 수 있습니다.

 

 

 

 

 

 

 

 

1) 변수를 사용하지 않은 경우

 

 

## 코드 예시

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS Variables</title>
        <style>
            *{ padding: 0; margin: 0; }
            li{ list-style: none; }

            #shopping{
                width: 100%; padding: 50px 0;
                background-color: #ededed;
            }
            #shopping h2{
                font-size: 40px; color: #146af0;
                text-align: center;
            }
            #shopping ul{
                display: flex; justify-content: space-between;
                width: 1200px; margin: 50px auto;
            }
            #shopping li{
                width: 220px; background-color: #fff;
                padding: 30px; box-sizing: border-box;
                border: 1px solid #146af0;
                text-align: center; font-size: 18px;
                font-weight: bold; color: #146af0;
            }
            #shopping button{
                display: block; margin: 0 auto;
                width: 160px; height: 50px;
                border-radius: 25px; border: none;
                background-color: #146af0;
                color: #fff; font-weight: bold;
            }
        </style>
    </head>
    <body>
        <div id="shopping">
            <h2>쇼핑몰</h2>
            <ul>
                <li>무료쇼핑몰만들기</li>
                <li>도메인등록</li>
                <li>쇼핑몰 디자인</li>
                <li>창업 공간</li>
                <li>창업 교육</li>
            </ul>
            <button>쇼핑몰 만들기</button>
        </div>
    </body>
</html>

- CSS 코드를 보면 색상 중  #146af0 이 매우 많이 나오는 것이 확인됩니다.

- 물론 VS CODE 같은 에디터를 쓰면 한번 썼던 색상은 나와서 선택만 하면 되긴 합니다.

- 하지만 수정하려면 어떨까요? 위 코드를 보면 4번이나 교체해야 하죠? 

- 이런 상황들 때문에 변수에 담습니다. 변수에 담으면 한 번만 수정하면 되기 때문입니다.

 

 

 

 

## 결과 보기

 

 

 

 

 

 

 

 

 

 

 

 

 

2) var() 함수 구문

 

## 변수 선언

//전역 변수선언
:root{
	--변수명: 값;
}


//지역 변수선언
선택자{
	--변수명: 값;
}

 

 

## 변수 호출(사용)

선택자{
	CSS속성명: var(--변수명);
}

 

 

 

 

 

 

 

 

 

 

 

 

3) 전역 변수 사용

- 위에서 해본 코드를 변수를 사용해보도록 하겠습니다.

 

 

## 코드 예시

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS Variables</title>
        <style>
            :root{
                --blue: #146af0;
                --bg: #ededed;
                --w: #fff;
            }

            *{ padding: 0; margin: 0; }
            li{ list-style: none; }

            #shopping{
                width: 100%; padding: 50px 0;
                background-color: var(--bg);
            }
            #shopping h2{
                font-size: 40px; color: var(--blue);
                text-align: center;
            }
            #shopping ul{
                display: flex; justify-content: space-between;
                width: 1200px; margin: 50px auto;
            }
            #shopping li{
                width: 220px; background-color: var(--w);
                padding: 30px; box-sizing: border-box;
                border: 1px solid var(--blue);
                text-align: center; font-size: 18px;
                font-weight: bold; color: var(--blue);
            }
            #shopping button{
                display: block; margin: 0 auto;
                width: 160px; height: 50px;
                border-radius: 25px; border: none;
                background-color: var(--blue);
                color: var(--w); font-weight: bold;
            }
        </style>
    </head>
    <body>
        <div id="shopping">
            <h2>쇼핑몰</h2>
            <ul>
                <li>무료쇼핑몰만들기</li>
                <li>도메인등록</li>
                <li>쇼핑몰 디자인</li>
                <li>창업 공간</li>
                <li>창업 교육</li>
            </ul>
            <button>쇼핑몰 만들기</button>
        </div>
    </body>
</html>

 

 

 

## 수정 보기

- 사실 결과는 다를 게 없습니다. 그래서 수정을 한 번에 편하게 할 수 있다는 것을 보여드리겠습니다.

- 변수만 바꾸면 전체가 알아서 바뀌는 것이 확인됩니다. 편하게 사용할 수 있겠죠?

 

 

 

 

 

 

 

 

 

 

 

 

4) 브라우저 지원

함수 크롬 엣지(익스플로러) 파이어폭스 사파리 오페라
var() 49.0 15.0 31.0 9.1 36.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 지역변수 지정 및 변수 재정의

:root{ } 내부에 작성한 변수는 전역 변수입니다. 전역 변수란 CSS문서에서 어디서든지 사용가능한 것을 의미합니다.

- 선택자 배부에 작성한 변수는 지역변수입니다. 지역변수란 그 선택자 내부에서만 사용할 수 있는 변수입니다.

 

 

 

 

1) 지역변수와 전역변수 비교

 

## 코드 예시

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS Variables</title>
        <style>
            :root{
                /* 전역변수 선언 */
                --main: #146af0;
            }

            h1{ 
                /* 전역변수 적용 - O */
                color: var(--main); 
            }
            h2{
                /* 지역변수 선언 */
                --sub: #ff0011;
                color: var(--sub); /* 지역변수 사용 - O */
                border-bottom: 2px solid var(--main); /* 전역변수 사용 - O */
            }
            h3{ 
                color: var(--sub); /* h2의 지역변수 사용 - X */
                border-bottom: 2px solid var(--main); /* 전역변수 사용 - O */
            }
        </style>
    </head>
    <body>
        <h1>제목태그1</h1>
        <h2>제목태그2</h2>
        <h3>제목태그3</h3>
    </body>
</html>

- 전역 변수(main)로는 파란색을 선언했고, h2선택 자안에 지역변수(sub)로는 빨간색을 선언했습니다. 

- 전역 변수는 CSS 어디서나 사용 가능하나, h2선택자에서 선언한 지역변수는 h2에서만 사용 가능합니다.

 

 

## 코드 결과

- h3태그의 글자색이 빨간색으로 변경 안 되는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2) 변수 재정의

- 전역에서 선언한 변수를 지역에서도 재정의할 수 있습니다. 물론 재정의된 값은 선택자 내부에서만 사용 가능합니다.

 

 

## 코드 보기

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS Variables</title>
        <style>
            :root{
                --main: #146af0;
            }

            h1{ 
                color: var(--main); 
            }
            h2{
                --sub: #ff0011;
                --main: #00ff11; /* 지역변수로 재정의 */
                color: var(--sub); 
                border-bottom: 2px solid var(--main); /* 지역변수 사용 */
            }
            h3{ 
                border-bottom: 2px solid var(--main); /* 전역변수 사용 */
            }
        </style>
    </head>
    <body>
        <h1>제목태그1</h1>
        <h2>제목태그2</h2>
        <h3>제목태그3</h3>
    </body>
</html>

- 전역 변수로 쓴 main을 h2에서만 녹색으로 재정의했습니다.

- h2에서 재정의했다고 해서 h3에서 바뀌지 않습니다. 

 

 

 

## 결과 보기

- 제목 태그 2의 테두리만 녹색으로 들어가는 것이 확인됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

3) 미디어 쿼리에서의 재정의

- 전역 변수에서 설정한 것을 미디어 쿼리에서 변경할 수 있습니다.

 

 

## 코드 예시

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS Variables</title>
        <style>
            h2{
                --titleSize: 50px;
                font-size: var(--titleSize);
            }

            @media screen and (max-width: 1000px){
                h2{
                    --titleSize: 25px;
                }
            }
        </style>
    </head>
    <body>
        <h2>제목태그2</h2>
    </body>
</html>

- h2의 글자크기를 50px로 설정했습니다.

- 창 사이즈가 클때는 상관없지만, 창사이즈가 1000px보다 작아지면 매우 크다 판단하여 25px로 줄였습니다. 

 

 

 

## 결과 보기

- 1000px보다 창사이즈가 작아지면 글자가 작아지는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형