px
모니터 위에서 화면에 나타낼 수 있는 가장 작은 단위
em
- 타이포그라피에서 현재 지정된 font size
- 부모의 font size를 곱한 값으로 계산됨
- relative to parent element
- em을 많이 사용할 경우 복잡한 구조 내에서는 즉각적으로 그 값을 알기 어렵다는 단점이 있음
rem
- 부모의 font size와 상관없이 root에 지정된 font size에 따라 크기가 결정됨.
- relative to root element
- 복잡한 구조 속에서도 그 값을 구하기 쉽다.
vw
- 1% of the viewport's width
- 100vw : 브라우저 너비 전체를 쓰겠다는 의미
- 50vw : 브라우저 너비의 반을 쓰겠다는 의미
vh
- 1% of the viewport's heigth
- 100vh : 브라우저 높이 전체를 쓰겠다는 의미
- 50vh : 브라우저 높이의 반을 쓰겠다는 의미
%
- Relative to the parent element
- 1em=100%
- 2em=200%
- 0.5em = 50%
- 부모 요소의 사이즈에 따라 변경이 되야한다면...%, em
- 부모와 상관없이 브라우저 사이즈에 따라 반응해야 한다면... v*, rem
- 요소의 너비와 높이에 따라 사이즈가 변경되어야 한다면...%, v*
- font size에 따라 사이즈가 변경되어야 한다면...em, rem
title과 contents의 font size가 서로 다른 rem을 사용하는 경우 padding 값 설정하기 예제
<section class="component">
<header class="title">Master Front-end ✨</header>
<p class="contents">
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Sapiente
veniam, nulla porro distinctio aliquid, quos quidem odio consectetur
aperiam, delectus cum. Deserunt facilis excepturi similique natus minus
deleniti rem sit?
</p>
</section>
.component {
width: 50%;
border: 1px solid red;
font-size: 2rem;
}
.title {
backgorund-color: red;
}
.contents {
font-size: 1rem;
}
@media screen and (max-width: 48rem) {
.component {
font-size: 1.5rem;
}
}
.title {
padding: 0.5em;
background-color: burlywood;
}
.contents {
font-size: 1rem;
padding: 0.5em;
}
em을 써서 padding을 쓰는 것이 좋긴 하지만 요소 마다 사이즈에 상관없이 고정적인 padding 을 유지해야 한다면 rem을 쓰는 것이 좋다.
좌우는 rem, 위아래는 em을 사용하면 현재 font size에 상관없이 모든 요소가 수직적으로 정렬이 되고, font size의 변경에 따라 위아래 padding이 조정될 수 있다.
.title {
padding: 0.5em 0.5rem;
background-color: burlywood;
}
.contents {
font-size: 1rem;
padding: 0.5em 0.5rem;
}
Media query 설정으로 인해 화면의 너비가 48rem을 기준으로 변했을 때 좌우, 위아래 padding 값 확인해자!
👀참고자료:
1. 단위 환산 계산기
2. 드리코딩엘리-단위 예제 영상