여러 블록의 위쪽 및 아래쪽 바깥 여백(마진)은 경우에 따라 제일 큰 여백의 크기를 가진 단일 여백으로 결합(상쇄)되곤 한다. 이런 동작을 여백 상쇄라고 부른다. 단, 플로팅 요소와 절대 위치를 지정한 요소의 여백은 절대 상쇄되지 않는다.
절대 위치 : position : absolute 상태
음수 마진(Negative Margins)도 마진 상쇄현상이 발생한다.
<div id="parent">
<div id="child"></div>
</div>
* {
margin: 0 auto;
}
#parent {
width: 100px;
height: 100px;
background-color: cornflowerblue;
margin-top: 30px;
}
#child {
width: 50px;
height: 50px;
margin-top: 40px;
background-color: rosybrown;
}
부모 블록에 border 속성을 주게 되면?
border: 1px solid black;
위의 사진과 같이 마진 상쇄가 일어나지 않고 부모-자식 블록 모두 margin이 들어가게 된다.
<hr/>
요소를 넣으면 상쇄를 방지할 수 있음