Chris Coyier의 Centering in CSS: A Complete Guide을 의역한 글입니다.
I hold no credit or rights to the following article. I merely translated the author's words. If you have more information please visit the site located at the bottom of the page.
1-1. inline 또는 inline-* 같은 element(ex. 텍스트 또는 링크):
text-align:center
로 정렬됨1-2. block level element:
margin-left
, margin-right
에게 auto값을 주면 정렬됨(또는 margin:0 auto
을 써서 한번에 줘도 됨) 그러나 너비값이 있어야 함1-3. block level element이 2개 이상일 경우:
2개 이상의 block level element를 행으로 정렬해야 할 때 디스플레이 타입을 타입을 다르게 하는 경우가 더 효과적일 수 있음
text-align: center
display: inline-block
display: flex
,justify-content: center
** block level인 element들을 서로 위로 쌓아올릴 때는 auto margin을 사용하면 됨
2-1. inline 또는 inline-* 같은 element(ex. 텍스트 또는 링크):
vertical-align
속성을 이용.flex-center-vertically{
display: flex;
justify-content: center;
flex-direction: column;
height: 400px;
}
.ghost-center {
position: relative;
}
.ghost-center::before {
content: " ";
display: inline-block;
height: 100%;
width: 1%;
vertical-align: middle;
}
.ghost-center p {
display: inline-block;
vertical-align: middle;
}
margin-top
의 값은 padding과 border의 역할을 수행하며 margin-top
대신 box-sizing: border-box
을 쓸 수 있음.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
height: 100px;
margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */
}
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
table
이나 display
을 사용하여 element들을 테이블로 만들면 됨display: table
display: table-cell; vertical-align: middle;
.parent {
display: flex;
flex-direction: column;
justify-content: center;
}
Credits to:
https://css-tricks.com/centering-css-complete-guide/