절대 위치 Div의 중앙 정렬


93
div#thing {
  position: absolute;
  top: 0px;
  z-index: 2;
  margin: 0 auto;
}

<div id="thing">
   <p>text text text with no fixed size, variable font</p>
</div>

div가 맨 위에 있지만 <center>또는 중앙에 위치 할 수 없습니다 margin: 0 auto.

답변:


152

div다음과 같이 고정 너비를 지정 하면 문제가 해결 될 수 있습니다 .

div#thing {
    position: absolute;
    top: 0px;
    z-index: 2;
    width:400px;
    margin-left:-200px;
    left:50%;
}

1
왜 그렇게 생각하지 않았는지 모르겠습니다 만, 수직 센터링에 항상 같은 기술을 사용하고 있지만 ... 어쨌든 감사합니다. 시간을 많이 절약 해 주셨습니다.
— Aayush

1
사용자가 수직으로 아래로 스크롤하면 div가 페이지 상단에 표시되고 가시 영역에는 표시되어야합니다
— PUG

내 오버레이 div에 동적으로 크기가 조정 된 이미지의 썸네일을 표시하고 있으므로 너비를 모릅니다.
— PUG

4
이것은 해결책 일뿐입니다. stackoverflow.com/questions/1776915/… 가 해결책 인 것 같습니다
— PUG

1
이것은 정답이 아닙니다. 다른 미디어 유형은이 스 니펫을 지원하지 않습니다.
— Sushan

97
div#thing
{
    position: absolute;
    width:400px;
    right: 0;
    left: 0;
    margin: auto;
}

3
어떻게 작동합니까? 답변이 유효한 이유를 알려주시겠습니까?
— afuzzyllama

1
저는 99 %의 시간 동안이 방법을 정말 좋아합니다. 패딩, 테두리 등을 다룰 필요가 없습니다.이 방법이 실패하는 것을 본 적이 없습니다. 다음에 실패하면 예제를 제공합니다.
— Dan

1
이 솔루션의 멋진 점은 퍼센트로도 작동한다는 것입니다. 브라우저 간 호환 여부는 확실하지 않습니다
— maljukan 2014

1
와. 나는이 일을 예상하지했지만 그것은 마법처럼 나를 위해 일한
— Awais 우마르

4
나는 이것이 정답이어야한다는 데 동의합니다. -200px 마진은 나에게 비명을 지 릅니다.
— Mani5556

36

내가 파티에 늦었다는 건 알지만, 정확한 너비를 모르는 경우 절대 항목을 가로로 배치해야하는 사람들을 위해 여기서 답변을 제공하겠다고 생각했습니다.

이 시도:

// Horizontal example.
div#thing {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

다음과 같이 속성을 조정하기 만하면 수직 정렬이 필요한 경우에도 동일한 기술을 적용 할 수 있습니다.

// Vertical example.
div#thing {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

1
Whaaat. 굉장합니다! 어떻게 작동하는지 설명해 주시겠습니까? 편집 : 일부 사냥을했고 왼쪽처럼 보입니다 : 50 %는 div의 왼쪽 위치를 실제로 중앙이 아닌 중앙으로 이동합니다. 그러나 translateX 이동은은의 50 %를 백업 내용의 폭
— 아지즈 자 베드

2
절대 위치는 항목의 왼쪽 상단에서 위치합니다. 번역을 사용하면 크기에 상대적인 양으로 이동합니다.
— Michael Giovanni Pumo

3
마이클, 그냥 당신이 알고 싶어서 파티에 늦지 않았습니다 ... 그리고 모르는 사람들을 위해 : transform : translate (-50 %, -50 %); 수행 한 라인과 수직 및 수평 중심 모두
— 마블 모에

4

수직 및 수평으로 중앙에 배치하려면 다음을 수행하십시오.

div#thing {
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%);
}

0

상대 너비 (백분율)가 필요한 경우 절대 위치에 div를 래핑 할 수 있습니다.

div#wrapper {
    position: absolute;
    width: 100%;
    text-align: center;
}

요소를 절대적으로 배치하려면 상위 요소를 상대적으로 배치해야합니다.


0

나는 같은 문제가 있었고 내 한계는 미리 정의 된 너비를 가질 수 없다는 것입니다. 요소의 너비가 고정되지 않은 경우 다음을 시도하십시오.

div#thing 
{ 
  position: absolute; 
  top: 0px; 
  z-index: 2; 
  left:0;
  right:0;
 }

div#thing-body
{
  text-align:center;
}

그런 다음 HTML을 다음과 같이 수정하십시오.

<div id="thing">
 <div id="thing-child">
  <p>text text text with no fixed size, variable font</p>
 </div>
</div>

0

또는 상대 단위를 사용할 수 있습니다.

#thing {
    position: absolute;
    width: 50vw;
    right: 25vw;
}

0

.contentBlock {
    width: {define width}
    width: 400px;
    position: absolute;
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto;
 
}


-22

예:

div#thing { text-align:center; }

5
이렇게하면 div 내의 내용이 정렬됩니다. 페이지 중앙에 div가 정렬되지 않습니다. 또한 문서 흐름의 일부인 내용이 아닌 다른 방식으로 절대 위치 div를 정렬하지 않습니다.
— CarterMan 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.