아래 노란색 부분의 margin 값이 왜 안 먹힐까요? ㅡㅡ;;;
이 상황에서 왜 margin값이 적용 안 되는지 궁금해 미치겠습니다. ㅎ
증상 확인: http://jsfiddle.net/k82fpzkm
또,
#box에 display:table-cell;을 적용하면 상단 margin값이 적용되긴 하는데,
좌우 margin에 해당하는 auto가 작동 않습니다. 이것도 왜 그런지 알고 싶습니다.
증상 확인 : http://jsfiddle.net/2h66ra1p/ (화면 중앙이 아닌 왼쪽 상단 구석에 붙음)
PS.
padding 값 적용 방법은 제외.
<div class=top> 요소 앞에 div 요소 추가하는 법 제외
맨 바깥 div를 table 등 다른 요소로 바꾸는 법 제외.
맨 바깥 div를 display:table-cell 속성 넣는 법 제외
<style>
#box {margin:100px auto 0; width:260px; height:260px; border-radius:3px; background:red;}#box .top {margin:20px auto 0; width:230px; height:50px; background:#b90000}
#box .middle {margin:20px auto 0; width:230px; height:50px; background:#b90000; clear:both;}
#box .bottom {margin:20px auto 0; width:230px; height:50px; background:#b90000}
</style>
<div id="box"><div class='top'>상단</div>
<div class='middle'>중단</div>
<div class='bottom'>하단</div>
</div>
답변 1개 / 댓글 1개
CSS에서 두 개 이상의 마진(margin)이 세로 방향으로 만났을 때 마진이 겹치는 현상으로,
위 엘리먼트의 마진과 아래 엘리먼트의 마진이 만나게 되면, 웹 브라우저는 두 마진중에서 더 큰 쪽의 마진을 적용하게 됩니다(두 마진이 같다면 하나만 적용). 즉, 50px과 50px이 만나서 100px이 되는 것이 아니라 두 마진이 겹쳐져서 50px의 마진만 적용되는 것이죠.만약, 100px의 공간이 생기도록 하려면, 위나 아래 엘리먼트중 하나의 마진을 패딩(padding)으로 바꿔야 합니다.
지식인 펌.
답변을 작성하려면 로그인이 필요합니다.
top 하단과 middle 상단의 margin 값 중 큰 것만 적용되겠지만,
<div class='top'> 상단엔 선택자 top의 상단 margin과 겹쳐질만한 div 요소가 아예 없으니까 위 내용과는 무관한 것 같은데요.