절대 위치 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.