절대적인 크기가 정해져 있는 단위로 절대 단위는 화면 크기나 해상도에 따라 지나치게 크거나 작게 보일 수 있다.
자주 쓰는 대표적인 예로 px
이 있다.
부모요소의 크기를 기준으로 상대적인 크기를 지정하는 단위이다. 적절한 설계를 통해 상대 단위를 잘 활용하면 반응형 웹 등 다양한 화면 크기에 대응할 수 있는 레이아웃 구현이 가능하다.
가장 많이 사용되는 단위는 %
, em
, rem
이다.
em
: 부모 요소의 글꼴에 비례. (2em은 현재 글꼴 크기의 2배를 의미)rem
: 루트 요소(<html>
)의 글꼴 크기에 비례vw
: 뷰포트 너비의 1%에 비례vh
: 뷰포트 높이의 1%에 비례vmin
: 뷰포트 너비와 높이 중 더 작은 치수 1%에 비례vmax
: 뷰퍼트 너비와 높이 중 더 큰 치수 1%에 비례%
: 100%를 기준으로 하는 상대 크기html 문서의 구성요소들은 기본적으로 박스 형태로 정의된다.
박스 모델은 테두리(border)와 내용(content) 그리고 안쪽 여백(padding)과 바깥쪽 여백(margin)의 네 가지 요소로 구성된다.
div {
width: 320px;
padding: 10px;
border: 5px solid gray;
margin: 0;
}
박스요소에 크기를 지정하면 기본적으로 콘텐츠 영역에 적용된다. 그러나 실제 박스의 크기는 border
, margin
, padding
을 모두 더해야 하기 때문에 각각의 박스를 적절하게 배치하려면 이들 크기가 함께 고려되어야 한다.
border
를 기준으로 하면 된다. 이 경우 기본 box-sizing
속성은 content-box
이기 떄문에 속성을 border-box
로 지정해준다.border 영역을 지정하기 위한 여러 속성
border-width
: 테두리 두께를 지정하는 속성border-style
: 테두리의 모양을 지정하는 속성border-color
: 테두리의 색상을 지정하는 속성border-radius
: 테두리의 모서리를 둥글게 만들기 위한 속성div {
border: 5px solid red;
border-left: 5px solid red;
border-radius: 10px;
}
margin은 박스의 인접 요소간의 여백을 말한다. 경우에 따라서는 박슬르 가운데 정렬하기 위해 사용할 수 있다.
auto
: 브라우저가 자동으로 마진을 조정한다.inherit
: 부모의 요소의 마진 속성을 상속한다.p {margin: 10px 5px 15px 20px;} /* top-10px, right-5px, bottom-15px, right-20px */
p {margin: 10px 5px 15px;} /* top-10px, right & left-5px, bottom-15px */
p {margin: 10px 5px;} /* top & bottom-10px, right & left-5px */
p {margin: 10px;} /* All 10px */
p {margin: auto;}
position
속성은 박스 구성요소들을 배치하기 위한 속성이다.
position
속성의 기본값으로, 요소를 나열한 순서대로 배치한다.static
과 같이 나열한 순서대로 배치되지만 top
, right
, bottom
, left
속성을 사용해 원하는 위치를 지정할 수 있다.static
)가 기준이 된다.top
, right
, bottom
, left
속성값을 이용해 요소를 원하는 위치에 배치할 수 있다.position
속성이 relative
인 요소z-index
값이 높을수록 위, 작을수록 아래에 배치되며 -
인 경우 기준 콘텐츠의 아래쪽을 의미position
속성이 적용된 경우에만 의미가 있음display
속성은 요소를 보여주는 방식을 지정하는 속성이다.
none
: 보이지 않음, visibiltiy: hidden
과 유사하나 영역 자체가 없어짐block
: 블록 박스inline
: 인라인 박스inline-block
: block
과 inline
의 중간 block
태그는 width=100%
인 태그들로 요소를 나란히 배치할 수 없다.
inline
태그는 콘텐츠의 크기만큼만 자리를 차지하기 때문에 다른 콘텐츠와 나란히 배치될 수 있지만 width
와 height
를 사용할 수 없어 주변 콘텐츠와 균형을 맞추기가 어렵다.
display
속성을 사용하면 block
태그에 inline
속성을 가지도록 변경할수도 있고 그 반대도 가능하다.
또한 inline
속성을 가지면서 즉, 다른 콘텐츠와 나란히 배치 되면서 block
요소의 width
, height
등의 속성이 적용되도록 하는 inline-block
속성도 있다.
margin: auto
는 블럭 속성 요소를 가운데 정렬하기 위한 일반적인 방법
width
속성이 100%이거나 정의되지 않은 경우에는 정렬이 이루어지지 않음.box-center {
margin: auto;
width: 50%;
border: 3px solid green;
padding: 10px;
}
블럭 요소의 position
속성을 absolute
로 두고 right
, left
속성을 이용해 원하는 위치에 정렬 시킨다.
.box-right {
position: absolute;
right: 0px;
width: 300px;
border: 3px solid green;
padding: 10px;
}
블럭 요소를 수직 정렬하는 가장 기본적인 방법은 padding
속성으로 박스의 안쪽 위/아래 여백을 동일하게 지정하는 방법이다.
.box-vcenter {
padding: 50px 0; /* 위/아래 50px, 좌/우 0 */
border: 3px solid green;
}
이미지를 가운데 정렬하는 방법은 크게 두가지 이다.
text-align: center
를 사용img
태그만 사용한다면 블럭 속성으로 변경한 다음 margin: auto
적용// 방법1
div {
text-align:center;
}
// 방법2
img {
display: block;
margin: auto;
}
...
<div!
<img src="a.jpg">
</div>
```![](https://velog.velcdn.com/images/geon8692/post/723334ab-6d1d-44d5-b0b7-a40716ea270b/image.png)