em, rem : CSS에서 상대적인 크기를 지정할 때 사용하는 단위
em은 부모 요소의 font-size를 기준으로 크기가 결정됩니다.예시를 통해 알아보겠습니다.
.parent {
font-size: 16px;
}
.child {
font-size: 1.5em; /* 16px * 1.5 = 24px */
}
✅ child의 font-size는 24px이 됩니다.
⚠️ 주의할 점 : em 단위를 중첩하면 크기가 점점 커질 수 있습니다.
.parent {
font-size: 16px;
}
.child {
font-size: 1.5em; /* 24px */
}
.grandchild {
font-size: 1.5em; /* 24px * 1.5 = 36px */
}
✅grandchild의 font-size는 36px이 되어 예상보다 커질 수 있습니다.
rem은 루트 요소(html)의 font-size를 기준으로 크기가 결정됩니다.예시를 통해 알아보겠습니다.
html {
font-size: 16px;
}
.parent {
font-size: 1.5rem; /* 16px * 1.5 = 24px */
}
.child {
font-size: 1.5rem; /* 16px * 1.5 = 24px */
}
✅ container의 font-size는 24px이며, 부모 요소의 영향을 받지 않습니다.
📌 rem이 유용한 경우
em vs rem 정리| 단위 | 기준 | 중첩 영향 | 사용 추천 |
|---|---|---|---|
em | 부모 요소의 font-size | O (배율 증가) | 버튼, 아이콘 등 특정 요소에 적용 |
rem | html의 font-size | X (일관성 유지) | 전체적인 폰트, 레이아웃 크기 조정 |
html {
font-size: 16px;
}
button {
font-size: 1rem; /* 16px */
padding: 0.5em 1em; /* 상하 8px, 좌우 16px (버튼 폰트 크기의 상대값) */
}
✅ padding 값은 button의 font-size에 따라 유동적으로 변합니다.
✅ font-size: 1rem;을 사용하면 부모 요소와 상관없이 16px로 유지됩니다.