| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 
 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>CSS Test: Max-height on absolutely positioned, non-replaced elements, 'height' based on 'top' and 'bottom' positions</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="absolute-non-replaced-max-height-003-ref.xht" />
        <meta name="assert" content="The 'auto' values on 'margin-top', 'margin-bottom' are set to '0' and the 'height' is the remaining space between the 'top' and 'bottom' positions, when 'height' is 'auto' and 'top' and 'bottom' are both not 'auto'. If such height is constrained by max-height, then we must re-process the values as following. If none of 'top', height, bottom are 'auto' and if both 'margin-top' and 'margin-bottom' are 'auto', solve the equation under the extra constraint that the two margins get equal values." />
        <style type="text/css">
            #div1
            {
                border: solid black;
                height: 3in;
                position: relative;
                width: 3in;
            }
            div div
            {
                background: blue;
                bottom: 1in;
                height: auto;
                margin-bottom: auto;
                margin-top: auto;
                max-height: 0.5in;
                position: absolute;
                top: 1in;
                width: 100%;
            }
            /*
		 1in : top
	+
		 auto (to solve): margin-top
	+
		 0 : border-top-width
	+
		 0 : padding-top
	+
		 auto (to solve) : height (may be constrained to use 0.5in 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:
		 1in : top
	+
		 0 (set): margin-top
	+
		 0 : border-top-width
	+
		 0 : padding-top
	+
		 1in (not constrained) : height (must be constrained to use 0.5in by max-height)
	+
		 0 : padding-bottom
	+
		 0 : border-bottom-width
	+
		 0 (set): margin-bottom
	+
		1in : bottom
	=============
		3in  : height of containing block
		So, here, we must reenter the algorithm since height is
		constrained and is no longer 'auto'.
		"
		If none of the three [top, height, bottom] are 'auto':
		If both 'margin-top' and 'margin-bottom' are 'auto',
		solve the equation under the extra constraint that
		the two margins get equal values.
		"
	so this brings:
		 1in : top
	+
		 auto (to solve): margin-top
	+
		 0 : border-top-width
	+
		 0 : padding-top
	+
		 0.5in (constrained) : height (constrained by max-height)
	+
		 0 : padding-bottom
	+
		 0 : border-bottom-width
	+
		 auto (to solve): margin-bottom
	+
		1in : bottom
	=============
		3in  : height of containing block
		So, here, margin-top must use 0.25in and margin-bottom must use 0.25in
		so that the equation remains balanced.
    */
        </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>
 |