flex 속성 쓰지않고 가운데정렬해보기
1. 요소의 크기 값이 pixel 단위일 때
1-1. 요소 생성
.test{
width:200px;
height:100px;
border:5px solid red;
}일단 만들고자 하는 크기의 요소를 생성한다.
난 여기서 width:200px / height:100px 값을 주었다.
1-2. position:absolute 속성 추가
.test{
width:200px;
height:100px;
border:5px solid red;
position:absolute;
}화면 크기를 기준으로 정렬을 할 것이기 때문에 absolute값을 주어야 한다.
1-3. 공식
50% - (크기/2 + padding + border + margin);
.test{
width:200px;
height:100px;
border:5px solid red;
position:absolute;
left:calc(50% - 105px);
top:calc(50% - 55px);
}
left와 top속성 (right, bottom속성도 상관없음)에 50%를 준 뒤 calc속성 (계산기 속성)을 이용하여
입력한 횡축에 맞는 크기 값/2 + 테두리 값을 빼준다.
만약 border값 등을 무시하게 된다면

이렇게 테두리 두께의 픽셀만큼 어긋나게 된다.

위치 지정 값에 테두리 픽셀 값만큼 더해 빼주게 되니까 두 상자가 정확히 가운데로 오며 일치하게 된다.
2. 요소 크기 값이 % 단위 일 때
% 수치의 값을 중앙 정렬할 때에는 비교적 더 간단하다.
2-1. 요소 생성
.test{
width:80%;
height:80%;
border:10px solid blue;
}화면의 80%씩 차지하는 박스가 있다.
2-2. position:absolute 속성 추가
.test{
width:80%;
height:80%;
border:5px solid red;
position:absolute;
}화면 크기를 기준으로 정렬을 할 것이기 때문에 absolute값을 주어야 한다.
2-3. 공식
.test{
width:80%;
height:80%;
border:10px solid blue;
position:absolute;
left:10%;
top:10%;
}left와 top속성에 (마찬가지로 right, bottom도 상관없다) 전체 화면인 100%에서 80%를 뺀 20%의 값에 양쪽에 배열을 해야 하니 2로 나눈 10% 값을 입력해주면 된다.
See the Pen GRjPQbp by Jonghyun (@jonghyun99) on CodePen.
필자는 개인적으로 사칙연산이 덜 들어가고 border과 padding 등 값을 신경 쓰지 않아도 되는 후자의 방법이 더 간편한 것 같다.
'Front > CSS' 카테고리의 다른 글
| [CSS] 마진상쇄현상(Margin Collapse) (0) | 2021.01.17 |
|---|---|
| [CSS]박스 모델 (Box Model, box-sizing) (0) | 2021.01.17 |
| [CSS] 높이와 너비 (width, height) (0) | 2021.01.16 |
| [CSS] CSS 테두리 (border) (0) | 2021.01.16 |
| [CSS] 표 (Tables) (0) | 2021.01.16 |