테스트 사이트 - 개발 중인 베타 버전입니다

[css] 마진 병합

마진 병합을 이해 못하는 사람들이 많다는 것에 간혹 놀랍니다. 단순히 마진을 내부 여백은 패딩과 비교하여 바깥 여백만으로 생각하면 문제가 심각해집니다. 마진 병합은 2개의 요소가 서로 이웃하여 만나는 경우, 하나의 마진인듯이 큰 값으로 적용됩니다. 

가령 3px의 마진을 가진 a,b 요소가 수직으로 만나게 된다면 둘 사이의 거리는 6px이 아니라 3px이 됩니다. 이것까지는 이해하지만 문제는 부모와 자식 요소 사이에 마진 병합 발생입니다.

부모와 자식사이에 발생된 마진 병합 처리는 구형 IE 브라우저는 제대로 처리 못합니다. 3px 마진을 가진 부모내에 5px의 마진을 가진 자식이 위치한다면 부모의 마진이 5px로 작동됩니다. 이것이 꽤나 기괴하게 보일 수 있고 또 브라우저에 무슨 오류난 것이 아닐까라는 착각도 하게 만듭니다. 그러나 이것은 어디까지나 제대로 작동되는 마진병합입니다.

자식의 마진은 부모의 마진을 변경시킬 수 있습니다. 자식의 마진이 10px이면 부모의 마진이 5px인데도 10px로 됩니다. 그러나 이러한 자식과 부모의 마진 병합 발생을 방지하려면 부모 요소에 padding이나 border 설정이 1px 이상 있으면 됩니다.




댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

그렇군요 ...*^^*
이런 심오한 이치가 숨어 있었군요....

게시글 목록

번호 제목
15265
26093
15262
3437
15257
3429
15256
15252
15251
15250
15246
15242
3425
3418
15236
3411
15233
15229
15228
15226
3399
15224
15217
15195
15193
3373
3360
15188
29852
15181
15159
3350
15158
15157
15152
15150
3334
15144
15140
3331
15136
29848
15129
15107
3320
15106
15095
29847
15094
3314
15091
15089
29834
15088
3303
15085
15084
26091
15083
15073
15071
3290
24301
15067
3285
3270
15064
29829
15062
15053
3261
3252
3249
15050
3243
15046
24291
24278
3231
15042
24275
3225
26075
15041
3222
3218
15025
15024
15018
29821
15015
15013
15012
3210
3200
3198
24274
15005
3188
15001