여기에 이미 좋은 점이 있지만 브라우저에서 여백 렌더링을 수행 하는 방법 에 대한 많은 정보 가 있지만 아직 그 이유 에 대한 답이 아직 없습니다.
"왜 margin-top : -8px가 margin-bottom : 8px와 같지 않습니까?"
우리가 또한 물어볼 수있는 것은 :
양수 하단 여백은 요소 이전에 '범프 업'하지 않는 반면 양수 상단 여백은 요소 다음에 '범프 다운'하지 않는 이유는 무엇입니까?
따라서 우리가 보는 것은 적용되는면에 따라 여백 렌더링에 차이 가 있다는 것입니다. 위쪽 (왼쪽) 여백은 아래쪽 (오른쪽) 여백과 다릅니다.
브라우저에서 스타일이 적용되는 방식을 (간소화 된) 살펴보면 상황이 더 명확 해집니다. 요소는 뷰포트에서 하향식으로 렌더링되며 왼쪽 상단 모서리부터 시작됩니다 (지금은 수직 렌더링을 사용하여 수평 하나는 동일하게 취급됩니다).
다음 html을 고려하십시오.
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
코드에서의 위치와 유사하게이 세 상자는 브라우저에서 '하향식'으로 쌓여 표시됩니다 ( 간단하게 유지하면서 여기서는 order
css3 'flex-box'모듈 의 속성을 고려하지 않겠습니다. ). 따라서 스타일이 상자 3에 적용될 때마다 이전 요소의 위치 (상자 1 및 2에 대한)가 이미 결정되었으며 렌더링 속도를 위해 더 이상 변경하지 않아야합니다.
이제 상자 3에 대해 위쪽 여백이 -10px라고 상상해보십시오. 이전 요소를 모두 위로 이동하여 공간을 확보하는 대신 브라우저는 상자 3을 위로 밀어 올릴 것이므로 Z- 색인에 따라 위쪽 (또는 아래쪽)에 렌더링됩니다. ) 모든 선행 요소. 성능이 문제가되지 않더라도 모든 요소를 위로 이동하면 뷰포트 밖으로 이동할 수 있으므로 모든 요소를 다시 표시하려면 현재 스크롤 위치를 변경해야합니다.
네거티브와 포지티브 모두 상자 3의 아래쪽 여백에도 동일하게 적용됩니다. 이미 평가 된 요소에 영향을주는 대신 다음 요소에 대한 새로운 '시작점'만 결정됩니다. 따라서 양의 하단 여백을 설정하면 다음 요소가 아래로 밀 립니다. 부정적인 것은 그들을 밀어 올릴 것입니다.
onset
와 를 삽입하여 개선 할 수 있습니다offset
. 많은 사람들이 ( positive ) 를 의미 할 때 항상offset
( negative ) 라는 단어를 사용하는 것은 사실 입니다. 답변을 업데이트하면이 메시지가 자동으로 삭제됩니다. 건배!onset