[CSS] 4. 단위와 값
in CSS on Css
4. 단위와 값
숫자, 길이 및 백분율
<length>
: 꺽쇠 있으면 숫자 + 단위<percentage>
<number> (unitless)
: int / float
- 상대길이
a. 글꼴 상대길이 - em, rem…
b. 뷰포트 상대길이 - vw, vh…- 절대길이 - px…
절대길이 - px
- 기준점이 없는 고정된 값
- 대부분 px만 사용한다.
- cm, mm, in 와 같은 값은 웹사이트에서 확대,축소시에 맞지않음 (viewport 시에도)
- pt(포인트) : 문서를 출력한다는 가정하에 a4, a2 등등에 맞춰 하는 것
- px : 사용자가 브라우저에서 기본 글꼴 크기를 늘려도 바뀌지 않는다. > 웹 접근성 문제 유발!
상대길이 - em, rem
<div class="parent">
안녕!
<div class="child">
안녕!
</div>
</div>
.parent {
font-size: 24px;
// 별도 설정 안하면 기본값인 16px
}
.child {
font-size: 0.5em;
// 12px
}
- 접근성을 위해서는 em, rem 을 사용해야한다.
- 1em === 부모의 font-size / %단위로 사용해도 결과는 같다.
- em은 요소마다 부모를 계속 찾아야해서 번거롭다 > rem 사용하기
- 1rem === root의 font-size
- root 는 브라우저의 기본 사이즈
- rem으로는 웹 접근성 대응할 수 있다!
상대길이 - vw, vh
<div class="contatiner">
안녕!
</div>
body {
// body 에는 기본적으로 margin 값이 설정되어 있다.
margin: 0;
}
.container {
width: 100vw;
height: 50px;
}
- viewport와 관련된 길이
- viewport : 디바이스별 화면의 크기
- 100vw : viewport의 전체 가로 길이
- 100vh : viewport의 전체 세로 길이
- 반응형을 위해 사용한다.
상대길이 - vmin, vmax
.text {
line-height: 2.0;
}
- 반응형에서 가로모드, 세로모드 변경에 대응해야할 때 사용
- 스마트폰 가로모드, 세로모드에서의 100vw, 100vh가 서로 바뀜
- 세로모드일때는 vmax == 100vh, vmin == 100vw
- 가로모드일때는 vmax == 100vw, vmin == 100vh
퍼센트
<div class="parent">
안녕!
<div class="child">
안녕!
</div>
</div>
.parent {
width: 100px;
height: 100px;
}
.child {
width: 50%; //50px;
height: 30%;
}
- 부모 객체의 퍼센트 값이 100 이다.
함수 표기법 - calc(), min(), max()
<div class="contatiner">
안녕!
</div>
.container {
width: calc(100% - 50px);
// 나누기, 곱셈도 사용 가능 (사칙연산)
height: min(100%, 200px);
// 100%와 200px 중에서 더 작은 것을 선택한다.
}
- 단위들에 대한 계산식
- 여러 단위를 조합해서 사용하고 싶을 때
calc(100% - 50px)
- 사칙연산 가능하며 연산자 양쪽으로 스페이싱하기
min(100%, 200px)
: 둘 중 작은 것을 선택max(100%, 200px)
: 둘 중 큰 것을 선택- min, max는 인터넷익스플로어 사용하지 않기 때문에 조심하기
나의 회고 🤫
처음 단위를 설정할때는 항상 px만 사용했는데 언제부턴가 사람들이 px 보다 rem 이 좋다해서 rem을 썼었다.
기준도 몰랐어서 항상 한번 대충 숫자 넣어보고 보기에 괜찮으면 그걸로 fix 하곤 했는데
rem의 기준이 브라우저의 기본 폰트라는 것을 알고다니 그동안의 의문점이 해소된 기분이다..!
반응형을 사용할땐 늘 %로만 컨트롤했었는데 viewport는 배우며 vh, vw도 활용하면 좋을 것 같다