Programming > CSS

[css-layout] 요소를 중앙에 배치하기

display 특성

정렬하고자 하는 내용물의 display가 display:block인 요소와 display:inline-block 요소의 경우이다.

부모요소가 display:inline 의 경우 크기지정이 안되므로 제외

부모/자식 요소 display별 좌우중앙배열

부모속성 자식속성 중앙정렬조건
inline-block inline-block 부모에 text-align: center; 설정되었을때
inline-block inline 부모에 text-align: center; 설정되었을때
block inline-block 부모에 text-align: center; 설정되었을때
block inline 부모에 text-align: center; 설정되었을때
block block 자식에 margin: 0 auto; 설정되었을 때

 

가로/세로 정중앙에 배치하기

position 이 absolute 인 속성을 갖는 요소를 부모 중앙에 배치하기

※ 조상중에 position: relative 인 요소를 기준으로 정중앙에 위치한다.

position : absolute;
left : 0;    right : 0;   margin: 0 auto;     // 좌우중앙에 위치
top : 0;   bottom : 0;   margin: auto 0;  // 상하중앙에 위치
left:0; right:0; top:0; bottom:0; margin: auto;   // 정중앙에 위치한다.

HTML

<div class="row">
        <div class="cell">중앙</div>
</div>

CSS

.row {
           margin: 10px;
           border: 3px solid;
           display: inline-block;
           width: 500px;
           height: 300px;
          
           position: relative;
}
.cell {
           width : 100px;
           line-height : 80px;
           text-align : center;
           border : 3px solid blue;
           border-radius : 10px;
           background : #FFFF00;
          
           position: absolute;
           top: 50%;
           left: 50%;
           transform: translate(-50%, -50%);
}

flex 를 이용한 정중앙 배치

<style>
.row {
        margin: 10px;
        border: 3px solid;
        width: 500px;
        height: 300px;
       
        display: flex;
        justify-content: center;
        align-items: center;
}
.cell {
        width : 100px;
        line-height : 80px;
        text-align : center;
        border : 3px solid blue;
        border-radius : 10px;
        background : #FFFF00;
}
</style>

<div class="row">
        <div class="cell">중앙</div>
</div>