“여백 : 0 자동;”에 정확히 필요한 것은 일하다?


205

margin: 0 auto;요소의 설정 이 중심을 잡는 데 사용 된다는 것을 알고 있습니다 (왼쪽-오른쪽). 그러나 요소와 그 부모가 자동 마진이 작동하기위한 특정 기준을 충족해야한다는 것을 알고 있으며 마법을 올바르게 얻을 수는 없습니다.

내 질문은 간단합니다. margin: 0 auto;자식을 왼쪽 중앙 에 배치하려면 요소와 부모에 어떤 CSS 속성을 설정해야 합니까?


이것은 IE에서 제대로 작동하지 않는 것 같습니다 ... 그래서 이것도 궁금합니다.
mpen

5
@Mark : IE는 margin: 0 auto;표준 모드에서만 올바르게 처리 하므로 doctype이 필요합니다 (이전에는 필요하지 않은 것처럼).
BoltClock

답변:


292

내 머리 꼭대기에서 :

  1. 요소는 블록 수준이어야합니다 (예 : display: block또는display: table
  2. 요소는 부유하지 않아야합니다
  3. 요소는 고정 또는 절대 위치를 가져서는 안됩니다 1

다른 사람들의 머리 꼭대기에서 :

  1. 요소는 2width 가 아니 어야합니다.auto

주의 모든 작동하는 이러한 조건은 요소의 충족해야이 중심되고.


(1) 이 한 가지 예외가있다 : 당신의 고정 또는 절대 위치 요소가있는 경우 left: 0; right: 0, 것이다 자동 여백의 중심 .

2 기술적 margin: 0 auto으로는 자동 너비로 작업하지만 자동 너비가 자동 여백보다 우선하며 자동 여백은 제로화되어 "작동하지 않는"것처럼 보입니다.


7
'내 머리 꼭대기에서 벗어난'2 가지 답변 : o
Russell Dias

4
고정 너비를 추가하면 완벽한 답변을 얻을 수 있습니다
meo

1
제길! 내가 코딩하는 동안 다른 사람들이 대답했습니다! 내 머리 꼭대기에서도 ... : O
Kyle

나는 그리워 ol start속성을 (그리고 마크 다운으로 해낼 수는 없습니다) :(
BoltClock

1
@ Triynko : 질문이나 내 대답 모두 HTML 표현 속성에 대해 아무 것도 말하지 않았으므로 (질문에는 태그가 없습니다 [html]!), 정확히 무엇을 불렀는지 확실하지 않습니다. 어쨌든 CSS로 타겟팅 할 수있는 모든 요소는 CSS 너비 및 높이 속성을 가질 수 있지만 모든 HTML 요소가 해당하는 표현 속성을 가질 수있는 것은 아니며, 그 이유는 단순히 특정 요소를 갖는 것이 의미가 없기 때문입니다. HTML 요소.
BoltClock

19

내 머리 꼭대기에서 width. 가운데에 놓을 컨테이너의 너비를 지정해야합니다 (부모 너비가 아님).


16
모든 것이 우리 머리 위로오고 있습니다!
BoltClock

8

CSS에 대한 완전한 규칙 :

  1. ( display: blockAND width하지 자동) 또는display: table
  2. float: none
  3. position: relative

3

요소가 블록 요소가 아닌 경우 머리 꼭대기에서 벗어납니다.

그런 다음 너비를 지정하십시오.


2

display : table에서도 작동합니다.이 경우 너비를 설정할 필요가 없으므로 유용한 표시 속성입니다. (이 게시물은 5 세라는 것을 알고 있지만 여전히 지나가는 사람과 관련이 있습니다.)


2

내 고양이 머리 꼭대기에서 가운데를 향하도록 div하려는 것이로 설정되어 있지 않은지 확인하십시오 width: 100%.

그렇다면 하위 div에 설정된 규칙이 중요합니다.


1

jsFiddle을 만든이 빠른 예제로 이동하십시오 . 잘 이해하기 쉽습니다. wrapper사이트 너비와 함께 div를 사용 하여 가운데 정렬 할 수 있습니다. 당신이 넣어야하는 이유 width는 브라우저가 당신이 유동적 인 레이아웃을하지 않을 것이라는 것을 알기 때문입니다.


1

내 제안은 다음과 같습니다.

First: 
      1. Add display: block or table
      2. Add position: relative
      3. Add width:(percentage also works fine)
Second: 
      if above trick not works then you have to add float:none;


-1

지금이 질문을 타격, 그리고 수정 할 수있는 사람을 위해 margin: 0 auto, 여기의 일이 당신이 유용하게 사용할 수있는 발견하십시오 table요소 를 지정하지 폭이 되어 있어야 display: table하고 있지 display: block 위해서는 margin: auto작업을 수행하는. 이것은의 조합으로, 일부 자명 할 수 display: block및 기본 width컨테이너를 채우기 위해 확장 테이블을 줄 것이다 가치, 그러나 당신이 경우 원하는 테이블은 폭 "자연"이다 걸릴 중앙에, 당신이 필요로하는display: table


사실이 아닙니다. ( 단지 제공 하더라도 display: block허용되는 답변의 조건 4를 충족시키지 못합니다)
Quentin

@Quentin 고마워요. 필자의 경우 테이블에 가로 공간을 채우고 싶지 않았으며 (이에 대한 전체 토론을 생략하는 것처럼 보임 margin: 0 auto) 내용의 너비가 다를 수 있으므로 테이블 너비를 지정할 수도 없었습니다 . 이 경우, 유일한 해결책은 작품입니다 (예는 테이블을 정상적인 방법으로하지만 센터를 렌더링)하는 것이 폭 규칙 display: tablemargin: 0 auto
삼손
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.