꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

CSS

margin collapse (마진 병합)

gold_dragon 2020. 7. 21. 10:58

인접 형제 요소의 마진은 상쇄됩니다.

See the Pen margin collapse sibling by 석금용 (@gmyong) on CodePen.

 

.box1, .box2, .box3에 각각 margin 값으로 10px을 적용했습니다. 그러면 우리가 생각하기에는 각 박스 사이에는 20px의 공간이 생겨야 되지만, 마진 병합 현상으로 10px의 공간만 나타납니다. 만약 margin의 값이 다르다면 값이 큰 수치 값만큼 공간이 생깁니다.

부모와 첫 번째 자식 요소

첫 번째 자식 요소에 margin-top 속성을 적용했을 때 마진은 상쇄돼서 부모 바깥에 나타나게 됩니다.

 

See the Pen margin collapse top by 석금용 (@gmyong) on CodePen.

 

.box2가 .box1 안에서 margin-top 속성에 의해 밑으로 10px 이동하는 것이 아니라, .box1과 .box2가 함께 10px 밑으로 내려간 것을 볼 수 있습니다.

이때 만약 .box1이 border, padding 속성을 갖거나 BFC이거나, .box2에 float 속성이 있고 .box1에 clear가 있으면 .box1은 안 움직이고 . box2 만 움직이게 됩니다.

부모와 마지막 자식 요소

마지막 자식 요소에 margin-bottom 속성을 적용하면 마진이 상쇄돼서 부모 바깥에 나타나게 됩니다.

 

See the Pen margin collapse bottom by 석금용 (@gmyong) on CodePen.

 

마지막 자식 요소인 .mb10에 margin-bottom 속성을 적용하면 .box1과 .box3 사이에 10px 공간이 생깁니다. 이때 .box1이 height, min-height, max-height를 가졌거나 BFC이면 .box1과 .box3 사이에 공간이 생기지 않고 .box1의 높이가 margin-bottom의 값만큼 높아집니다.

'CSS' 카테고리의 다른 글

웹 이미지에 대한 이해  (0) 2020.07.22
image 하단에 공백이 생기는 이유  (0) 2020.07.21
웹 접근성을 위한 텍스트 숨김 처리  (0) 2020.07.17
Negative margin (음수 마진)  (0) 2020.07.17
display: block과 inline 차이  (0) 2020.07.17