티스토리 뷰

IT/프로그래밍

CSS 단위 px, rem, em, %

탐구소년 2020. 2. 12. 13:56

안녕하세요 탐구소년입니다. 탐-하 ㅋㅋ

 

CSS는 주로 HTML문서 스타일을 정의해줄 때 사용되는 언어입니다. CSS는 사이즈를 표현할 때 여러 가지 단위를 사용하기 때문에 각각의 단위의 쓸모를 잘 구별해서 사용해야 합니다. 특히나 반응형 웹을 만들 때 이들에 대한 이해가 정말 중요한데요. 여러가지 단위가 있지만, 이번 글에서는 사용 빈도가 높은 px, rem, em, % 에 대해서만 알아보겠습니다. 

 

먼저, 각각의 특징!

 

- px : 절대값으로 사용되는 단위. 고정된 값이므로 사용하기 편하지만 반응형 웹에는 적절하지 않습니다.

- rem : 최상위 요소인 <html> 요소에 비례하여 사이즈를 갖게 되는 단위. <html>에 font-size가 16px로 되어 있다면 1rem은 자동적으로 16px과 같아집니다. 

- em : 부모 요소에 비례하여 사이즈를 갖게 되는 단위. 부모 요소에 font-size가 16px로 되어 있다면 1em은 자동적으로 16px과 같아집니다. 

- % : 부모 요소에 비례하여 비율을 맞추는 단위. 부모 요소의 사이즈가 100%가 됩니다. 크기를 부모 요소의 절반으로 하고 싶다면 50%를 지정하면 됩니다.

 

그럼 다음으로는 간단한(!) 예시들을 보도록 하겠습니다. 같은 html 문서에 대해서 어떤 단위를 사용했냐에 따라 어떤 결과가 나타나게 되는지를 확인해볼게요(이미지만으론 차이가 크게 안 느껴질 수도 있습니다).

 

 

html 문서 코드

 

<div class="box">

  안녕

</div>

 

 

1. px만 사용한 CSS 코드와 결과

 

.box{

  background-color: tomato;

  color: white;

  display: inline-block;

  font-size: 160px;

  padding: 16px;

}

이 경우 무슨 일이 있어도(?) 폰트 사이즈는 160px로, 패딩은 16px로 고정이 됩니다.

 

 

2. html에 font-size를 8px로 지정한 다음 rem 사용하기

 

html{

  font-size: 8px;

}

.box{

  background-color: tomato;

  color: white;

  display: inline-block;

  font-size: 10rem;

  padding: 1rem;

}

둘 사이의 차이는 html 태그의 font-size 차이 뿐입니다.

이 경우 .box의 스타일은 그대로 두더라도, html의 font-size를 바꿔줌에 따라 div 요소의 크기가 달라지는 것을 확인할 수 있습니다. 

 

 

3. em을 사용해서 padding 적용하기

 

html{

  font-size: 8px;

}

.box{

  background-color: tomato;

  color: white;

  display: inline-block;

  font-size: 10rem;

  padding: 1em; /* 위의 예제와 다른 유일한 부분 */

}

padding에 em을 사용했습니다. 그랬더니 padding 사이즈가 확연히 달라졌는데요. 이는 div 태그의 font-size가 현재 10rem, 즉 80px인 상태이므로 1em은 부모(자신을 품고 있는 태그)의 font-size에 맞게 80px이 된 것입니다. 

 

 

4. %를 사용 

 

.box{

  background-color: tomato;

  color: white;

  display: inline-block;

  font-size: 10rem;

  padding: 5%; /* 위의 예제와 다른 유일한 부분 */

}

%를 써주게 되면 padding의 크기가 div 영역 전체의 크기에 백분율에 맞춰서 표시하게 됩니다. %의 편리한 점은 바로 브라우저 크기가 변할때마다 거기에 맞춰서 함께 요소 크기도 변한다는 점입니다. 따라서 반응형 웹을 제작할 때 많이 사용하게 됩니다. 

댓글
공지사항