CSS - marginauto; - 작동 원리
사용 여백 : 자동
블록 요소를 수평으로 센터링하는 것은 잘 알려진 기술이다. 그러나 왜 그것이 어떻게 작동하는지 궁금해 한 적이 있습니까? 이에 대한 답을 얻기 위해 우선 자동차가 얼마나 효과가 있는지 알아볼 필요가 있습니다. 또한 믹스에는 자동
수직 센터링을 위해 작동하는 경우 마진을 줄 수 있으며 몇 가지 다른 문제가있을 수 있습니다..
하지만 먼저, 무엇을 하는가? 자동
실제로해라.?
정의 자동
변화하는 집단, 요소 유형 과 문맥. 여백 있음, 자동
두 가지 중 하나를 의미 할 수 있습니다 : 사용 가능한 공간을 차지하거나 0 픽셀. 이 두 가지 요소에 대해 다른 레이아웃 정의.
사용 가능한 공간을 차지하는 "auto"
이것은 마진의 가장 보편적 인 사용입니다 자동
우리는 종종 우연히 만난다. 할당함으로써 자동
요소의 왼쪽 및 오른쪽 여백에 요소의 컨테이너에서 사용 가능한 가로 공간을 똑같이 차지하므로 요소가 가운데에 오게됩니다.
그러나 이것은 수평 여백에만 적용됩니다 ( 왜 나중에), 그리고 또한 떠 다니는 데는 효과가 없을거야. 과 인라인 요소 그리고 그 자체로도 일할 수 없다. ...에서 순수한 과 고정 된 위치 된 요소들 (그러나 우리는 그러한 작업을하는 방법을 보게 될 것입니다).
사용 가능한 공간을 차지함으로써 가짜 플로트
이후 자동
오른쪽 여백과 왼쪽 여백 모두에서 "사용 가능한"공간을 똑같이 차지합니다. 자동
그것들 중 오직 하나에 주어졌다.?
왼쪽 또는 오른쪽 여백 자동
오른쪽 또는 왼쪽으로 플러시 된 것처럼 보이는 요소를 만드는 "사용 가능한"공간을 모두 차지합니다..
“자동” 0px로 계산 됨
전에 언급했듯이, 자동
플로팅, 인라인 및 절대 요소에서는 작동하지 않습니다. 이 모든 요소는 이미 가지고 있습니다. 그들의 레이아웃을 결정했다., 그래서 사용에 아무 소용이 없다. 자동
여백을 위해 그리고 그것을 중심에두기를 기대한다..
그 같은 것을 사용하는 초기 목적을 무너 뜨릴 것입니다. 흙손
. 금후 자동
해당 요소에 0px 값이 있습니다..
자동
너비가없는 경우 일반적인 블록 요소에서도 작동하지 않습니다. 지금까지 내가 보여준 모든 사례는 너비가 있습니다..
값의 너비 자동
가질 것이다 0px
여백. 블록 요소의 너비는 일반적으로 컨테이너의 너비를 나타냅니다. 자동
또는 100 %
따라서 마진 자동
~에 계산됩니다. 0px
몇몇 경우.
값으로 수직 마진이 어떻게되는지 자동
?
자동
상단 및 하단 여백에서 항상 0px로 계산됩니다 (절대 요소 제외). W3C 사양은 다음과 같이 말합니다.
“만약 “margin-top” 또는 “마진 아래” ~이다. “자동”, 사용 된 값은 0 "
왜 지금까지 미스테리인가. 일반적인 세로 페이지 흐름 때문일 수 있습니다. 페이지 크기가 높이에 따라 증가합니다.. 따라서 요소를 컨테이너에 세로로 가운데 맞추는 것은 가로로 완료 한 경우 (대부분의 경우)와 달리 페이지 자체에 상대적으로 가운데에 표시되도록하지는 않습니다..
그리고 아마도 같은 이유 때문일 수도 있습니다. 절대 값 요소에 대한 예외를 추가하기로 결정했습니다.이 요소는 전체 페이지 높이를 따라 세로로 가운데에 놓을 수 있습니다.
또한 마진 붕괴 효과 (인접한 요소의 붕괴” 마진)은 수직 마진에 대한 또 다른 예외입니다.
그러나 후자는 거의 없을 것으로 보입니다 - 그 이유는 마진을 붕괴시키지 않는 요소 - 수레와 같은 요소와 과다
이것 말고도 명백한
, 여전히 0 픽셀의 수직 여백을 할당합니다. 자동
.
절대 위치에 배치 된 요소 중앙 정렬
절대 위치 요소에 대한 예외가 발생하기 때문에”사용할 것이다. 자동
값을 세로 및 가로 가운데에 맞 춥니 다. 하지만 그 전에 우리는 언제 여백 : 자동
절대적으로 배치 된 요소에서 우리가 원하는 것처럼 실제로 작동합니다..
여기에 또 다른 W3C 사양이 있습니다.
" “왼쪽”, “폭”, 과 “권리” 아르 “자동”: 먼저 설정하십시오. “자동” 값 “여백 - 좌측” 과 “margin-right” ~ 0 ... "
"3 개 중 어느 것도 “자동”: 둘 다 “여백 - 좌측” 과 “margin-right” 아르 “자동”, 여분의 제약 조건 하에서 방정식을 풀어 두 마진이 같은 값을 얻는다 "
그 말은 수평의 자동
여백 동등한 공간을 점유하기 위해 값 왼쪽
, 폭
과 권리
~해서는 안된다. 자동
, 기본값. 그래서 우리가해야 할 일은 절대적으로 배치 된 요소에 어떤 가치를 부여하는 것입니다.. 왼쪽
과 권리
~해야한다. 완벽한 센터링을위한 동일한 값.
사양에는 수직 마진에도 비슷한 내용이 언급되어 있습니다..
“세 명 모두 “상단”, “신장”, 과 “바닥” 자동 설정 됨 “상단” 정적 위치로 ... ”
“세 개 중 어느 것도 “자동”: 둘 다 “margin-top” 과 “마진 아래” 아르 “자동”, 두 개의 여백이 같은 값을 얻는다는 여분의 제약 하에서 방정식을 푸십시오. ”
따라서, 절대 요소가 수직 중심, 그... 상단
, 신장
, 과 바닥
값은 자동
.
이제이 모든 것들을 결합함으로써, 우리는”얻을 것이다 :
결론
페이지의 요소를 오른쪽 또는 왼쪽으로 배치하려면 다음 요소를 배치하지 말고 (float에서 발생하는 것과 같이), 사용할 옵션이 있다는 것을 기억하십시오 자동
여백 용.
요소를 절대로 변환하면 수직으로 가운데에 맞출 수 있습니다. 좋은 아이디어는 아닙니다. 플렉스 박스 (flexbox)와 CSS 변환과 같은 다른 옵션들이 있습니다..