220724 TIL 상대 단위(em, rem, vw, vh)에 대하여

2022. 7. 24. 22:14·성장이야기/TIL

상대 단위

상대 단위란 px처럼 고정되지 않고 유동적으로 바뀔 수 있는 길이를 나타내는 단위이다.

상대 단위의 종류에는 em, rem, vh ,vw 등이 대표적인 css의 상대 단위이다.

 

이전에 블로그 웹 클론코딩할때 이 상대 단위를 사용하지 않고 절대 단위를 사용해서 웹페이지의 크기가 달라지면 내가 처음에 만들었던 모양이 다 깨졌던 경험이 있다. 그래서 3가지 화면 기준을 잡고 화면 크기마다 각각 다르게 px로 설정해줬던 기억이 있다.

한 페이지를 만드는데 3가지 다른 화면을 만들어야해서 완전 하드 코딩했었다. 

그 당시 em, rem, vw, vh라는 단위가 있다는건 알았지만 뭔가 어렵게 느껴져서 사용할 엄두도 못 냈었다. (공부를 안 했으면서 핑계는..)

 

그래서 이번에는 상대단위에 대한 개념을 잡고 가기 위해 정리해보려고 한다.

 

em

em은 font-size 속성 값에 비례해서 결정되는 단위이다.

font-size를 따로 설정해주지 않으면 기본적으로 html에 16px이 font-size로 할당이 된다

div {
	font-size: 1em;
}

이 경우 div의 부모 요소에 font-size가 설정되어 있지 않아 1em은 16px이 된다

  • 1em = 16px * 1 = 16px

만약 font-size가 2em과 0.5em 일 경우도 살펴보자

  •  2em = 16px * 2 = 32px
  • 0.5em = 16px * 0.5 - 8px
<style>
.parent {
	font-size: 20px;
}
.child {
	font-size: 1.5em;
}
</style>

<div class="parent">
	<div class="child">Child</div>
</div>

여기서 child의 font-size는 1.5em이기 때문에 상위 부모 요소인 parent의 폰트 사이즈 20px의 1.5배가 된다 

font-size를 10px로 설정할 경우도 살펴보자

  • 0.5em = 10px * 0.5 = 5px
  • 1em = 10px * 1 = 10px
  • 2em = 10px * 2 = 20px

예시와 같이 em단위는 font-size 값에 비례해서 값이 결정된다.

 

rem

rem의 'r'은 root를 의미한다. rem은 루트(최상위 요소 = html 요소)에 지정된 사이즈에 따라서 크기가 결정된다.

em은 부모요소의 font-size를 기준으로 비례해서 값을 정했다면,

rem은 최상위 요소의 font-size를 기준으로 값을 정한다.

HTML에서 최상위 요소는 <html>이다. 

html도 font-size가 따로 값이 정해지지 않았으면 기본값인 16px이다.

html {
	font-size: 16px;
}

div {
	font-size: 1.5rem;
}

최상위 요소인 html의 font-size가 16px이므로 div의 font-size는 24px이다.

  • 1.5 rem = 16px * 1.5 = 24px

rem도 em과 마찬가지로 값이 비례한다는 건 똑같지만, 어떤 값을 기준으로 비례하는지가 달라서 상황에 맞게 쓰면 된다.

 

폰트 사이즈를 결정할 때는 em단위보다는 rem단위를 쓰는 것을 더 권장한다고 한다.

em의 경우 부모 요소를 기준으로 계산되기 때문에 요소가 많아지면 실제 폰트 크기를 알기 어려워지지만 rem은 최상위 html의 폰트 사이즈를 기준으로 계산되어서 실제 폰트 크기를 쉽게 알 수 있기 때문이다.

그리고 em 단위를 사용할 경우 재사용이 어렵고 유지보수가 힘들어지는 경향도 있다고 한다.

vw

vw(viewport width)는 브라우저 창 너비 값의 100분의 1단 위이다. 1vw =  뷰포트 너비의 1%

  • 예를 들어 브라우저 창의 너비가 1000px이면 1vw는 10px이 된다.

vh

vh(viewport height)는 브라우저 창 높이값의 100분의 1단 위이다. 1vh = 뷰포트 높이의 1%

  • 예를 들어 브라우저 창의 높이가 100px이면 1vh는 1px이 된다.

 

반응형 웹을 만들 때 vw, vh를 사용하면 유연하게 크기 조정이 되어 반응형 웹 만들때 유용하다.

 

이렇게 공부하고 정리하니 이전에 어렵다고 생각해서 겁부터 먹고 공부 안 한 내가 한심하게 느껴진다..  

웹 페이지 화면 3가지 경우에 따라 px로 화면을 만들 시간에 상대 단위에 대해서 공부하고 제대로 웹페이지를 만들었다면 반응형 웹을 만들 수 있지 않았을까??

다음 주 과제는 의미 있는 마크업과 반응형 웹페이지를 만드는 것을 목표로 한 주를 달려보자

'성장이야기 > TIL' 카테고리의 다른 글

220726 웹 페이지야 반응해줘..  (0) 2022.07.26
220725 TIL 무지성 100문제 풀기  (0) 2022.07.25
220723 TIL 또 대충 할거야?  (0) 2022.07.23
220722 TIL 아직 끝나지 않았다  (0) 2022.07.22
220721 TIL 할 수 있다면 할 수 있다. - 피카소  (0) 2022.07.21
'성장이야기/TIL' 카테고리의 다른 글
  • 220726 웹 페이지야 반응해줘..
  • 220725 TIL 무지성 100문제 풀기
  • 220723 TIL 또 대충 할거야?
  • 220722 TIL 아직 끝나지 않았다
seungjjun
seungjjun
  • seungjjun
    개발이야기
    seungjjun
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 성장이야기
        • TIL
        • 주간회고
      • Java
        • Spring
        • Spring Security
      • 트러블슈팅
      • Kafka
      • OS
      • Network
      • 메가테라
      • Database
      • Algorithm
      • Git
      • HTML
      • CSS
      • 독서
      • 컴퓨터 이해하기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    주간회고
    redis
    메가테라 주간회고
    이커머스 프로젝트
    graphQL
    항해플러스
    항해99
    Til
    메가테라
    개발일지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seungjjun
220724 TIL 상대 단위(em, rem, vw, vh)에 대하여
상단으로

티스토리툴바