반응형

CSS

CSS를 사용하다보면, 가장 기본적으로 쓰는 것이 px단위이다. 이외에도 em, rem, %(percent) 단위가 있다. 다양하게 활용할 수 있도록 공부해보자. 

 

CSS의 단위

CSS의 단위로는 절대 단위와 상대 단위가 있다. 앞서 언급한 px 는 절대 단위이고, 이외에 cm, mm, ic(인치), pc, pt(포인트) 등이 있다. 상대 단위로는 em, ch, rem, vh, vw 등이 있다. 대부분의 브라우저에서는 폰트 사이즈의 기본값이 12pt, 16px, 1em, 100% 로 이루어져 있다. 

 

px

픽셀인 px는 모니터에 따라 상대적인 크기를 가짐으로서, 반응형 웹에는 적절하지 않다. 그렇기 때문에 웹디자인할 때에는 px 를 권장하지 않는다. 

 

em과 rem

em부모 요소의 글꼴 크기를 의미하고, rem루트 요소의 글꼴 크기를 의미한다. 줄글로만 보면 어려우니 예제를 통해 확인해보자. 

 

em의 예제

font-size: 1.5em;

글자 크기를 상위 요소의 1.5배로 만든다는 뜻이다. 

 

<!DOCTYPE html>
<html>
<head>
<style>
.box_container {
  width: 200px;
  height: 200px;
  font-size: 20px;
  background-color: skyblue;
  border: 2px solid blue;
}

#box {
  width: 5em;
  height: 5em;
  background-color: gray;
  border: 2px solid black;
}
</style>
</head>
<body>
  <div class="box_container">text
    <div id="box">box</div>
  </div>
</body>
</html>

개발자도구(F12)를 통해 확인해보면, font-size의 5배인 100px로 출력되는 것을 확인할 수 있다.

 

 

 

rem의 예제

rem또한 em과 동일하게 글자크기에 따라 비례되는 속성인데, em과의 결정적인 차이점은 rem은 HTML태그의 글자크기만 참조한다는 것이다. <div> 등 다른 태그들의 글자크기는 신경쓰지 않아도 된다. 

#box {
  width: 5rem;
  height: 5rem;
  background-color: gray;
  border: 2px solid black;
}

HTML font-size가 16px 였기 때문에 width16 * 5 = 80px 로 출력되었다. 위에서 언급했듯이, HTML 기본 폰트 사이즈는 16px 이기 때문에 여기에 62.5% 를 곱해주면 10px 를 맞춰두고 개발이 가능하다. 

html {
  font-size: 62.5%;
}

HTML 은 16px 로 맞춰진 상태에서 하위 태그들을 rem 을 사용하게 되면, 10배수로 계산되어지기 때문에 활용하기에 편리하다. 

 

%(percent)

퍼센트는 주로 박스의 길이를 화면 크기에 맞추어야할 때 사용한다. 만약 해상도의 가로 크기가 300px 인 모니터가 있다고 가정할 때, 태그 가로길이도 300px로 하면 가로길이가 알맞게 적용된다. 그러나 해상도의 가로크기가 350px 되어버리는 순간 길어진 50px만큼 빈 공간이 생기게 된다. 화면에 꽉차는 박스를 만들경우 퍼센트(%)단위를 사용하면 된다.

<!DOCTYPE html>
<html>
<head>
<style>
#box {
 width:100%;
 height:30px;
 background:skyblue
}
</style>
</head>
<body>
    <div id="box">box</div>
</body>
</html>

 

더 알아보기 : 반응형 웹

반응형 웹을 구현하기 위해서는 위에서 언급한 상대단위 vw, vh을 사용하면 된다. vw 는 Viewport Width, vh Viewport Height 의 약자이다. 뷰포트(보여지는 영역)를 기준으로한 단위로서, 다시 말해서 보여지는 영역에서 얼만큼 차지할 것인지 지정하는 단위인 것이다. 

/* 1vw = 뷰포트 너비의 1% */
1vw = 5px

500px 너비인 뷰포트에서 1vw 의 값은 5px 가 되는 것이다. 사용자가 드래그 앤 드롭을 통해 윈도우 너비를 조정할 경우 브라우자 스스로 1vw의 값을 계산해주니 편리하다. @media 를 사용하지 않아도 브라우저의 크기에 따라 자유자재로 움직일 수 있으니 반응형 웹에 딱 맞는 단위인 것이다. vh 도 동일하다. 

 

vw와 vh는 뷰포트 영역 전체 또는 일부만 차지할 때 유용하게 사용할 수 있다. CSS 의 calc()와도 유용하게 사용할 수 있다. 

 

calc( )

CSS 의 속성 값을 계산할 수 있는 함수로서, width와 height를 단순 계산식으로 무엇이든 표현이 가능하다. 헤더영역의 높이가 50px 이고 나머지 컨텐츠 영역높이를 헤더를 제외한 부분으로 만들고 싶은 경우에는 아래와 같이 활용 가능하다.

height: calc(100vh - 50px);

 

%(percent) 는 부모 요소를 계산하기 때문에 부모의 너비, 높이 등을 지정해야만 해당 요소가 상속받아 사용할 수 있는 반면에 vw, vh는 부모의 너비, 높이와 상관없이 해당 요소의 값만 지정하여 뷰포트를 꽉 채울 수 있다. 

 

 

참고

https://developer.mozilla.org/ko/docs/Web/CSS

반응형

'Front-End > HTML & CSS' 카테고리의 다른 글

CSS 기본 : margin 과 padding 의 속성과 차이  (0) 2021.11.10
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기