여러가지 태그를 사용해 중앙정렬하기(margin : auto, text-align : center, translate(50%,50%), line-height)

백돼지·2022년 12월 3일
0

드림코딩

목록 보기
7/13

*margin : auto;

기본적으로 box나 div등은 모두 한줄에 한개씩 만들어갈 수 있게끔 남은 공간이 margin으로 채워져 있다. 이는 자식 박스가 부모 박스 안에 있을때도 마찬가지.

이때 margin : auto를 사용하게 되면

부모 박스를 기준으로 양쪽에 공평하게 자동으로 중앙 정렬이 된것을 확인 할 수 있다.
단, margin : auto는 margin 자체가 한줄에 하나씩 들어가는 만큼 수평 정렬만 가능할뿐,
수직 정렬은 불가능하다는점 명심.

*text-align : center

div같은 블록 요소에 대해서는 적용할 수 없고 이는 margin : auto를 사용해야한다.
text나 button등 블럭요소 안에서 그 안에 있는 요소들(인라인 요소) text-align : (원하는 정렬값)을 지정해 text 뿐만 아니라 다른 요소들도 정렬이 가능하다.
text-align 역시 수평 정렬만 가능할뿐 수직 정렬은 불가능하다는 점 명심.

*transform : translate(50%,50%)
자신의 박스 width와 height를 기준으로 x축에서 50%, y축에서 50% 이동시킨다.
이렇게 해서 중앙 정렬이 가능하다.
(추가설명)
예를 들어 부모 박스가 (1000px,1000px)이고, 자식 박스가 (50px,50px)이라고 정의해보자.

.inner3 {
    transform: translate(50%, 50%);
  }
  
  이처럼 단순히 translate(50%,50%)만 사용하면
  자신의 박스 폭과 너비를 기준으로 50%씩 x,y축으로 이동했기 때문에
  중앙 정렬이 되어있지않다.
  
  따라서, 아래와 같은 방법을 사용한다.
  
  .inner3 {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  
  포지션을 먼저 원하는 부모 박스 안에서 움직일 수 있게끔 만들어준다.(position: absolute 사용)
  그리고 위에서 50%, 왼쪽에서 50% 만큼 이동시켜 중앙 지점으로 옮겨준 상태에서,
  translate를 (-50%,-50%), 즉 자신의 박스 폭과 너비의 길이만큼 x축의 반대방향으로 50% 이동, 
  y축의 반대 방향으로 50%이동함으로써 완전한 중앙정렬을 만들 수 있다.
  
  

여기서 중요한 점은 translate(@%,@%)가 자신의 박스 폭과 너비 길이만큼 @%움직인다는 것 명심.

*line-height
텍스트의 경우 text-align : center과 line-height : (부모 노드의 폭)px을 지정해 야매로
중앙 정렬이 가능하다.
현재 text에 text-align : center를 사용하여 수평 정렬을 한 상태이다. 모든 text는 font의 크기만큼 지정된 height를 가지고있는데, 그 height의 크기를 line-height : (부모 박스의 height 값)으로 바꾸어 text의 height크기를 부모 박스의 크기와 동일하게 한다.

따라서 text는 부모 박스의 height크기에 맞게 중앙 정렬이 되었기 때문에 자연스레 수직 정렬이 되었다. 하지만 위 사진처러 text가 두줄인 상태로 존재한다면, 각 text의 height값이 부모 박스와 동일하기 때문에 그만큼 공백이 생긴것을 확인 할 수 있다. 따라서 한줄인 텍스트에 대해서만 사용이 가능하다는 점 명심.

profile
용호의 코딩블로그 22.11 코딩공부 시작 23.2 부트캠프 입소

0개의 댓글