I'm struggling with a strange behaviour of some CSS block elements in a plain HTML document. Depending on whether an element has a border or not, the behaviour of CSS property margin-top changes.
See this jsFiddle and click on the appropriate sections to watch what happens. For example, click on the first section. Here you will see, how margin-top: 40px; of the h2 element stops to work if the section has 0px border.
How to fix this?
The HTML-Code:
<div class="topbar">
    <h1>Hello world!</h1>
</div>
<div class="page-wrapper">
    <section class="page-section">
        <h2>What happens here?</h2>
    </section>
    <section class="page-section">
        <h2>Different Section</h2>
    </section>
</div>
The CSS-Code
body{
    margin:0;
    padding:0;
}
.topbar{
    position: fixed;
    top: 0px;
    width: 100%;
    height: 60px;
    text-align: center;
    border: 1px solid silver;
}
.page-wrapper{
    margin-top: 60px;
    border: 1px solid red;
}
.page-section{
    height: 200px;
    border: 1px solid blue;
}
.page-wrapper.active,
.page-section.active{
    border: 0px;
}
.page-section h2{
    margin-top:40px;
}
And some jQuery just to toggle div borders:
$(document).ready(function(){
    $('.page-section').click(function(){
        $(this).toggleClass('active');
        $('.page-wrapper').toggleClass('active');
    });
});
