제일 처음 HTML과 CSS를 배우기 시작하고, 클론코딩을 시도하려 했을때 가장 애를 먹었던 부분이 컨텐츠들을 정렬하고 위치를 내가 원하는 대로 두는것이 어렵게 다가왔습니다. 지금도 다른 영역을 배우다가 다시 앞에 보여지는 부분들 즉 이러한 컨텐츠들을 구성하려니 또 다시 처음하는 것처럼 가물가물하여 블로그에 정리해봅니다. 여러방법이 있으나 absolute를 이용한 방식은 개인적으로 별로인 것 같아 다른 2가지 정도씩으로 정리해보겠습니다.
div 가운데 정렬 하는 방법
div 영역을 중앙에 배치하는 방향에 따라 다양한 방법이 존재합니다. 다음과 같이 정렬 방향에 따라 케이스를 나눠서 방법을 소개해드리도록 하겠습니다.
정렬 방향
- div의 가로만 정렬
- div의 세로만 정렬
- div의 가로와 세로 모두 정렬
div의 가로만 정렬
- text-align 속성 이용
- flex 속성 이용
text align 속성 이용하여 가로 정렬
위 처럼 div.outer안에 div.inner가 있는 상황이고, 이 정렬 방법은 text-align 속성을 이용하여 정렬하는 방식입니다.
.outer {
text-align: center;
}
.inner {
display: inline-block;
}
이 가로 가운데 정렬 방법에서 가장 중요한 키포인트는 div.outer에는 text-align 속성이 center, div.inner 영역의 display가 inline-block으로 설정되어 있다는 것입니다.
flex 속성 이용하여 가로 정렬
같은 구조의 영역에서 CSS 속성만 변경하여 동일하게 적용해보겠습니다.
.outer {
display: flex;
justify-content: center;
}
또는
.outer {
display: flex;
}
.inner {
margin: 0 auto;
}
위 처럼 flex 속성을 이용하도 동일하게 가로 정렬을 적용할 수 있습니다.
이 방법의 키포인트는 div.outer 영역에 대해서 display 속성을 flex, justify-content 속성을 center로 설정하시거나 justify-content 속성 없이 div.inner 영역에 margin 속성을 0 auto로 설정해주시면 됩니다.
div의 세로만 정렬
- vertical-align 속성 이용
- flex 속성 이용
vertical align 속성 이용하여 세로 정렬
div 영역은 위와 동일한 상태로 구성하였고, 이 세로 정렬 vertical-align 속성을 이용하는 방법입니다.
.outer {
height:250px;
display: table-cell;
vertical-align: middle;
}
.inner {
display: inline-block;
}
이 세로로 가운데 정렬하는 방법은 div.outer 영역은 높이가 고정적으로 설정이 되어 있어야하고, display 속성은 table-cell 그리고 vertical-align 속성은 middle로 설정이 되어야합니다. 또한 div.inner 영역의 display 속성은 inline-block 으로 설정되어야합니다.
flex 속성 이용하여 세로 정렬
영역 구조는 동일하게 하고 css의 속성만 변경하여 적용해보겠습니다.
.outer {
display: flex;
align-items: center;
}
또는
.outer {
display: flex;
}
.inner {
margin: auto 0;
}
div.outer 영역에 flex 속성과 align-items를 적용하여 세로 정렬이 가능합니다. 또는 align-items 속성이 없이도 div.inner 영역에 margin 속성을 auto 0으로 설정하여 적용 가능합니다.
div의 가로와 세로 모두 정렬
지금까지는 가로만 정렬하거나 세로만 정렬하는 방법에 대해서 소개해드렸습니다. 지금부터는 가로와 세로 모두 정렬할 수 있는 방법을 알려드리겠습니다.
flex 속성으로 가로와 세로 모두 정렬
.outer {
display: flex;
}
.inner {
margin: auto;
}
또는
.outer {
display: flex;
align-items: center; /* 수직 정렬 */
flex-direction: row; /* default: row */
justify-content: center; /* flex direction에 대해서 정렬방식 선택 */
}
위에서 설명했던 가로와 세로 정렬의 flex 방식을 적용하여 정렬을 할 수 있습니다.
flex 속성에 대한 자세한 내용은 아래 링크를 통해 확인하실 수 있습니다.
주의 사항
참고
'실전예제 > CSS예제' 카테고리의 다른 글
[CSS] 액자형식(반응형) 비디오(Youtube) 삽입하기 (0) | 2021.12.28 |
---|---|
[CSS] 메뉴 바 상단 고정 시키기(fixed) (0) | 2021.09.26 |