IT/SeSAC

[새싹x코딩온] 웹 개발자 부트캠프 과정 7일차 정리 | 반응형 웹, MediaQuery, CSS 단위, CSS 변수

eoeung 2023. 8. 3. 15:26

이번 시간에는 현대 웹 사이트라면 당연하게 고려해야할 반응형 웹과 css를 처음부터 만들 필요 없이 잘 만들어진 부트스트랩에 대해서 학습했다.

1. 반응형 웹

반응형 웹이란 간단하게 말하면 사용자의 디바이스를 고려해 제작한 웹이라고 생각하면 된다.
브라우저의 너비나 높이가 디바이스 혹은 사용자가 조정하면 변할 수 있는데, 이 너비와 높이에 따라 HTML요소들의 크기가 상황에 맞춰(디바이스의 크기) 반응한다는 뜻으로 기억했다.

CSS를 %로 설정하면 일단, 기본적으로는 반응형 웹을 만들 수는 있지만, 제약이 너무 크다.
디바이스 별로 혹은 크기별로 요소를 지정하고 싶을 수도 있지 않은가? 그래서 MediaQuery라는 것을 이용해서 원하는 대로 반응형 웹을 제작할 수 있다.

2. MediaQuery

위에서 소개한 개념인 MediaQuery를 일단 코드로 만나보면 다음과 같다.
사용법은 @media (조건식) { css 적용 } 이다.

/*
	- 최소 너비가 500px인 경우 적용
    	→ 너비가 500px이상이면 적용
*/
@media (min-width: 500px){
    body{
        background-color: skyblue;
    }
}

/*
	- 최대 너비가 300px인 경우 적용
    	→ 너비가 300px이하면 적용
*/
@media (max-width: 300px){
    body{
        background-color: orange;
    }
}

/*
	- 최소 너비가 300px이며 최대 너비가 500px인 경우 적용
		→ 너비가 300px ~ 500px인 경우 적용
*/
@media (min-width: 300px) and (max-width: 500px){
    body{
        background-color: #fff;
    }
}

/*
	- 최대 높이가 300px인 경우 적용
    	→ 높이가 300px이하면 적용
*/
@media (max-height: 300px){
    p{
        font-size: 30px;
        font-weight: bold;
        background-color: green;
    }

}

위 코드를 실행한 동영상을 보면 단번에 이해가 갈 것이다.

[동영상 1] MediaQuery 코드를 적용한 모습


MediaQuery를 적절히 잘 사용한다면 디바이스마다 다른 너비와 높이라도 원하는 css를 보여줄 수 있다.

3. CSS 단위

6가지가 있는데, 깔끔하게 정리해보겠다.

  • px: pixel
  • %: percent
  • em
    • font-size 속성값에 비례해서 결정되는 상대적인 단위(상위 요소 크기에 비례)
    • 중첩이 가능

  • rem(root em)
    • 최상위 요소(<html>)에 비례

  • vw(viewport width)
  • vh(viewport height)


vw, vh에 대해서 예를 들어 설명해보겠다.
만약 1200px x 900px의 브라우저 크기일 경우, 1vw와 1vh는 각각 1200 x 1%, 900 x 1%인 12px, 9px이 된다.
너비와 높이가 1000 px x 500px로 변경되는 경우에는 1vw와 1vh는 각각 1000 x 1%, 500 x 1%인 10px, 5px로 된다.

 

4. CSS 변수

css에 변수가 있다는 것을 처음 알았다.
사용 방법에 대해서 적어보려한다.

/*
    *CSS 변수
        - 변수 이름: --로 시작
*/
:root {
    /* 전역 변수 */
  --color-success: rgb(49, 156, 49);
  --color-error: rgb(237, 58, 58);
  --color-white: rgb(255, 255, 255);
}

.btn{
    /* 지역 변수 */
    --size: 8px;

	/* var을 통해 :root에 선언한 변수를 가져오는 모습 */
    color: var(--color-white);
    border: none;
    border-radius: 4px;
    font-weight: bold;
    padding: var(--size);
    width: calc(var(--size) * 25);
}

.success{
    background-color: var(--color-success);
}

.error{
    background-color: var(--color-error);
}


큰 특징이 3가지가 존재한다.

  • 변수를 선언할 때는 '--'을 붙여서 사용한다.
  • :root {...}에 선언한 변수는 전역 변수가 된다.
  • 선언한 변수를 사용할 때는 var()을 사용한다.