<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>CSS Test: Max-height on absolutely positioned, non-replaced elements, 'margin-top' and 'margin-bottom' set to '0'</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/"> <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-08-31 --> <link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height"> <link rel="match" href="reference/absolute-non-replaced-height-003-ref.htm"> <meta name="flags" content=""> <meta name="assert" content="When 'top' and 'height' are 'auto' and 'bottom' is not 'auto', then the height is based on the content (and such height can be constrained by a max-height declaration) and then set 'auto' values for 'margin-top' and 'margin-bottom' to 0, and solve for 'top' "> <style type="text/css"> #div1 { border: solid black; height: 3in; position: relative; width: 3in; } div div { background: blue; bottom: 1in; height: 2in; margin-bottom: auto; margin-top: auto; max-height: 1in; position: absolute; top: auto; width: 100%; } /* auto (to solve) : top + auto (to solve): margin-top + 0 : border-top-width + 0 : padding-top + 2in : height (will be constrained to use 1in by max-height) + 0 : padding-bottom + 0 : border-bottom-width + auto (to solve): margin-bottom + 1in : bottom ============= 3in : height of containing block " 'top' is 'auto', 'height' and 'bottom' are not 'auto', then set 'auto' values for 'margin-top' and 'margin-bottom' to 0, and solve for 'top' " so this brings: auto (to solve) : top + 0 (set): margin-top + 0 : border-top-width + 0 : padding-top + 1in (constrained) : height + 0 : padding-bottom + 0 : border-bottom-width + 0 (set): margin-bottom + 1in : bottom ============= 3in : height of containing block So, top must use 1in in order to balance the equation */ </style> </head> <body> <p>Test passes if a blue rectangle is <strong>vertically centered</strong> in an hollow black square.</p> <div id="div1"> <div></div> </div> </body> </html>