<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

 <head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">


 
  <style type="text/css">
  div.container
  {
  background-color: silver; 
  /* height: 200px; */
  margin: 1em 0em;
  overflow: hidden;
  width: 100%;
  }

  div.float
  {
  background-color: yellow;
  border: green solid 4px;
  float: left;
  height: 128px;
  padding: 2em;
  width: 128px;
  }
  
  /*

  offsetHeight of div.float
  -------------------------
  
      4px (border-top)
  +
     32px (padding-top)
  +    
    128px (height)
  +
     32px (padding-bottom)
  +
      4px (border-bottom)
   =======
    200px


  offsetWidth of div.float
  ------------------------
  
      4px (border-left)
  +
     32px (padding-left)
  +    
    128px (width)
  +
     32px (padding-right)
  +
      4px (border-right)
   =======
    200px

  */

  div.overflow
  {
  background-color: orange; 
  /* height: 200px; */
  overflow: hidden;
  }
  
  li.correct
  {
  color: green;
  font-weight: bolder;
  }  

  li.incorrect
  {
  color: red;
  font-weight: bolder;
  }  
  
  hr {margin: 3em;}
  </style>

 </head>

 <body>

 
  <!--
  non-positioned block boxes created before and after the float box 
  flow vertically as if the float did not exist.
  http://www.w3.org/TR/CSS21/visuren.html#floats
  
  The border box of (...) an element in the normal flow that 
  establishes a new block formatting context (such as an element with 
  'overflow' other than 'visible') must not overlap the margin box of 
  any floats in the same block formatting context as the element itself.
  http://www.w3.org/TR/CSS21/visuren.html#floats
  -->

  <h2 id="test1">Test 1 (1 float)</h2>

  <div class="container">
    <div class="float">This yellow square is floated left and it has no margin.</div>
    <div style="margin: 0px 100px" class="overflow">This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 100px left margin and a 100px right margin;<br><br>
        This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 100px left margin and a 100px right margin;
    </div>
  </div><!-- .container -->


  <hr>

  <h2 id="test2">Test 2 (1 float)</h2>

  <div class="container">
    <div class="float">This yellow square is floated left and it has no margin.</div>
    <div style="margin-left: 200px;" class="overflow">This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 200px left margin;<br><br>
        This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 200px left margin;
    </div>
  </div><!-- .container -->


  <hr>

  <h2 id="test3">Test 3 (1 float)</h2>

  <div class="container">
    <div style="margin-right: 100px;" class="float">This yellow square is a floated left and it has a right margin of 100px.</div>

    <div style="margin-right: 100px;" class="overflow">This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 0px left margin and a 100px right margin;<br><br>
        This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 0px left margin and a 100px right margin;
    </div>
  </div><!-- .container -->

 
  <hr>

  <h2 id="test4">Test 4 (2 floats)</h2>

  <div class="container">
    <div class="float">This yellow square is floated left and it has no margin.</div>
    <div style="float: right;" class="float">This yellow square is a floated right and it has no margin.</div>
    <div style="margin: 0px 100px;" class="overflow">This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 100px left margin and a 100px right margin;<br><br>
        This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 100px left margin and a 100px right margin;
    </div>
  </div><!-- .container -->
  <hr>

  <h2 id="test5">Test 5 (2 floats)</h2>

  <div class="container">
    <div class="float">This yellow square is floated left and it has no margin.</div>
    <div style="float: right;" class="float">This yellow square is a floated right and it has no margin.</div>
    <div style="margin-right: 200px;" class="overflow">This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 200px right margin;<br><br>
        This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 200px right margin;
    </div>
  </div><!-- .container -->

 
  <hr>

  <h2 id="test6">Test 6 (2 floats)</h2>

  <div class="container">
    <div style="margin-right: 100px;" class="float">This yellow square is floated left and it has a right margin of 100px.</div>
    <div style="float: right; margin-left: 100px;" class="float">This yellow square is floated right and it has a left margin of 100px.</div>
    <div class="overflow">This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 0px left margin and a 0px right margin;<br><br>
        This orange rectangle:<br>
        – establishes a <strong>new block formating context</strong> thanks to the CSS declaration <code>overflow: hidden</code>;<br>
        – has a 0px left margin and a 0px right margin;
    </div>
  </div><!-- .container -->

  <!--
  non-positioned block boxes created before and after the float box 
  flow vertically as if the float did not exist.
  http://www.w3.org/TR/CSS21/visuren.html#floats  
  
  The border box of (...) an element in the normal flow that 
  establishes a new block formatting context (such as an element with 
  'overflow' other than 'visible') must not overlap the margin box of 
  any floats in the same block formatting context as the element itself.
  http://www.w3.org/TR/CSS21/visuren.html#floats
  -->

 

 </body>
</html>