| <!DOCTYPE html> |
| <script src="../../../resources/check-layout.js"></script> |
| <style> |
| body { margin:8px; font-size:16px; } |
| </style> |
| <p>Given a float followed by a regular block with the same height as the float, then a block B with |
| a negative margin, followed by a block with with overflow:hidden. Check that the |
| overflow:hidden block doesn't overlap with the float, and also that it takes up all available |
| space (but not more) beside the float. There's an empty collapse-through block before B, so |
| that our initial logical top estimate fails and we have to relayout. When laying out again, we |
| have to detect that the float that we first thought didn't affect the overflow:hidden block now |
| affects it.</p> |
| <p>Below there should be an olive square to the left of a navy square. The navy square should be |
| slightly larger than the olive one, and there should be spacing between them. They should not |
| overlap.</p> |
| <div style="width:18em;"> |
| <div> |
| <div style="float:left; width:8em; height:8em; margin-right:1em; background:olive;"></div> |
| <div style="height:8em;"></div> |
| <div> |
| <!-- Here's an empty block that we can just collapse through, but we don't realize that |
| when calculating our initial top estimate on its parent, so we have to relayout |
| when it turns out that a negative margin has pulled us upwards (and suddenly we |
| have something block-level that's affected by the float). --> |
| <div></div> |
| |
| <div style="margin-top:-8em;"></div> |
| |
| <!-- Here's a block-level element that is affected by floats, because it's a table. We |
| could have used e.g. an overflow:hidden DIV for the same effect. --> |
| <div id="bfc" style="overflow:hidden; height:9em; background:navy;" data-total-x="152" data-expected-width="144"></div> |
| </div> |
| </div> |
| </div> |
| <p id="result" style="clear:both;"></p> |
| <script> |
| checkLayout("#bfc", document.getElementById("result")); |
| </script> |