CSS 축소 여백의 요점은 무엇입니까?


80

CSS2 상자 모델은 인접한 수직 여백이 축소됨을 알려줍니다 .

많은 디자인 버그의 원인이되기 때문에 상당히 성가신 일입니다. 마진 축소의 목적을 이해함으로써 언제 사용하는지, 필요하지 않을 때 피하는 방법을 알 수 있기를 바랍니다.

이 기능의 목적은 무엇입니까?


3
인접한 수직 여백 붕괴
sam

답변:


101

"여백"의 일반적인 의미는 "이것을 10px만큼 이동"을 의미하는 것이 아니라 "이 요소 옆에 10px의 빈 공간이 있어야합니다."라는 의미입니다.

나는 항상 이것이 단락으로 개념화하는 것이 가장 쉽다는 것을 발견했습니다.

단락을 제공 margin-top: 10px하고 다른 요소에 여백이 없다면 일련의 단락 간격이 아름답게 배치됩니다. 그러나 물론 단락 아래에 다른 요소를 배치 할 때 문제가 발생합니다. 두 사람은 만질 것입니다.

여백이 무너지지 않으면 margin-bottom: 10px이전 코드 에 추가 하는 것을 망설 일 것입니다. 그러면 한 쌍의 단락이 20px 간격을두고 단락이 다른 요소와 10px 만 분리되기 때문입니다.

따라서 수직 여백이 무너집니다. 10px의 위쪽 및 아래쪽 여백을 추가하면 "다른 요소에 어떤 여백 규칙이 있는지는 신경 쓰지 않습니다. 각 단락의 위와 아래에 최소한 10px의 패딩이 필요합니다."라고 말하는 것입니다.


1
+1. CSS 외부에서도 동일한 논리가 적용됩니다. 예를 들어 Microsoft Word에서 제목 뒤에 12px의 여백이 있고 단락 앞에 6px의 여백이있는 경우 단락이 제목 뒤에 있으면 18px가 아닌 12px의 공간이 있습니다.
Arseni Mourzenko

1
오른쪽-붕괴-동일한 dom 수준이 아닌 한. 예는 무너 노력 단순히 이럴 : 정말 짜증나
Toskan

1
당신은 "그들이 테이블 행 안에 있지 않는 한"을 의미합니다. 테이블 행은 블록 수준 요소가 아닙니다. 고유 한 규칙이 있습니다. 자세한 설명 은 stackoverflow.com/questions/136727/… 을 참조하십시오 .
VoteyDisciple

2
margin-top해당 요소도 추가하는 것은 어떻습니까?
호치민 NGHIA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.