| <!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" media="screen"> |
| |
| * { |
| margin: 0; |
| padding: 0; |
| } |
| |
| /* -------- Test case ---------- */ |
| |
| #warper { |
| margin: 40px; |
| width: 400px; |
| border: 3px solid blue; |
| position: relative; |
| height: auto; |
| } |
| |
| .fill { |
| height: 40px; |
| margin-bottom: 10px; |
| background-color: green; |
| } |
| |
| #abs_100_height { |
| height: 100%; |
| width: 200px; |
| position: absolute; |
| top: 0; |
| left: 0; |
| border: 3px solid yellow; |
| } |
| |
| #abs_100_height div { |
| height: 100%; |
| border: 3px dashed red; |
| } |
| |
| /* -------- Test case ends ---------- */ |
| |
| #desc { |
| margin: 100px 0 0 50px; |
| } |
| |
| h3 { |
| margin-bottom: 5px; |
| } |
| |
| ul { |
| list-style-position: inside; |
| margin-bottom: 20px; |
| } |
| |
| li { |
| margin-bottom: 7px; |
| } |
| |
| p { |
| margin-bottom: 20px; |
| } |
| |
| </style> |
| |
| </head> |
| |
| <body> |
| |
| <!-- Test case --> |
| |
| <div id="warper"> |
| |
| <div class="fill"></div> |
| <div class="fill"></div> |
| <div class="fill"></div> |
| |
| <div id="abs_100_height"> |
| <div id="inner_abs_100_height"></div> |
| </div> |
| |
| </div> |
| |
| <!-- Test case ends --> |
| |
| <div id="desc"> |
| |
| <h3>Test case:</h3> |
| <ul> |
| <li> |
| Blue div has 400px width, dynamic height, and position: relative. |
| </li> |
| <li> |
| Inside blue div there are 3 other div with height: 40px (and has some bottom margin..)<br> |
| the height of the blue div expands with the green divs inside.. |
| </li> |
| <li> |
| Yellow div has position absolute (and positioned in the top left corner of the blue div)<br> |
| it's height set to 100%<br> |
| the height of the yellow div now equals with the height of the blue div |
| </li> |
| <li> |
| Red div is inserted into the yellow div, and it's height set to 100% |
| </li> |
| </ul> |
| |
| <h3>Problem:</h3> |
| <p> |
| The height of the red div <strong>should equals</strong> to the height of the blue (and yellow) div.<br> |
| It works right with Opera 9.2, Firefox 2, Camino 1.0.4 and Internet Explorer 7. |
| </p> |
| |
| <h3>Workaround:</h3> |
| <p> |
| If you set position absolute to the red div, it's height will expands along with the blue div. |
| </p> |
| |
| <h3>Result:</h3> |
| <div id="result"></div> |
| </div> |
| |
| <script> |
| function gebi(id) |
| { |
| return document.getElementById(id); |
| } |
| |
| function addResult(color, message) |
| { |
| var result = gebi("result"); |
| var div = document.createElement("div"); |
| div.style.color = color; |
| div.appendChild(document.createTextNode(message)); |
| result.appendChild(div); |
| } |
| |
| var blueHeight = gebi("warper").offsetHeight; |
| var yellowHeight = gebi("abs_100_height").offsetHeight; |
| var redHeight = gebi("inner_abs_100_height").offsetHeight; |
| if (redHeight == yellowHeight) |
| addResult("green", "PASS: redHeight == yellowHeight"); |
| else |
| addResult("red", "FAILED: redHeight (" + redHeight + ") != yellowHeight (" + yellowHeight + ")"); |
| if (redHeight == blueHeight) |
| addResult("green", "PASS: redHeight == blueHeight"); |
| else |
| addResult("red", "FAILED: redHeight (" + redHeight + ") != blueHeight (" + blueHeight + ")"); |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| </script> |
| |
| </body> |
| </html> |