I noticed on my wiki page that two unpositioned DIVs (zero top/bottom margins) adjacent to each other would move related to each other as links were hovered in each DIV, and tracked this down to an obscure bug where if a block-level item with some margin was at the end of the first DIV, it would cause the shuffle of the second when :hovering the links.
It needs:
static, then the page loads with the gap, if they are relative (but no position info), then it loads with no gap as expected. This is probably due to the different collapsing margin rules for static/relative positioning.p {margin: 0.5em 0;}). This can be smaller than the padding of the containing block.text-decoration: none; or a border: 0px; declaration (that should be the same as no border, but it isn't)! The same bug on this page is driven by a change in text-decoration. Notice that the page is not reflowing when :hovering links, so the text-decoration is not doing anything other than triggering the margin flowing out of the containing element. Here is a test link to play with.