| <!doctype html> |
| <!---------------------------------------------------------------------------------------> |
| <script src='/resources/testharness.js'></script> |
| <script src='/resources/testharnessreport.js'></script> |
| <link rel='stylesheet' href='../support/base.css' /> |
| <link rel="help" href="https://drafts.csswg.org/css-tables-3/#computing-column-measures" /> |
| <script> |
| |
| function assertOffsetWidthEquals(a,targetValue) { |
| var desc = document.querySelector('main > hr:last-of-type + p + p') || document.querySelectorAll('main > hr + p + p')[document.querySelectorAll('main > hr + p + p').length-1]; |
| var root = document.querySelector('main > div:last-of-type') || document.querySelectorAll('main > div')[document.querySelectorAll('main > div').length-1]; |
| generate_tests(assert_equals, [ |
| [ |
| desc.textContent, |
| root.querySelector("[target="+a+"]").offsetWidth, |
| targetValue |
| ] |
| ]); |
| } |
| |
| function assertOffsetHeightEquals(a,targetValue) { |
| var desc = document.querySelector('main > hr:last-of-type + p + p') || document.querySelectorAll('main > hr + p + p')[document.querySelectorAll('main > hr + p + p').length-1]; |
| var root = document.querySelector('main > div:last-of-type') || document.querySelectorAll('main > div')[document.querySelectorAll('main > div').length-1]; |
| generate_tests(assert_equals, [ |
| [ |
| desc.textContent, |
| root.querySelector("[target="+a+"]").offsetHeight, |
| targetValue |
| ] |
| ]); |
| } |
| |
| </script> |
| |
| |
| <main> |
| |
| <h1>Height distribution</h1> |
| <p>Check that percentages are accounted for correctly for table-cell children</p> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Percentages resolve based on the column width</p> |
| <div> |
| <x-table style="width: 100px; height: 100px;"> |
| <x-tr><x-td><div target=a style="width: 100%; height: 100px; background: blue"></div></x-td></x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetWidthEquals('a',100); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Percentages resolve based on the row height</p> |
| <div> |
| <x-table style="width: 100px; height: 100px;"> |
| <x-tr><x-td><div target=a style="width: 100px; height: 100%; background: blue"></div></x-td></x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetHeightEquals('a',100); |
| |
| </script> |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Percentages resolve based on the final column width</p> |
| <div> |
| <x-table style="width: 0px; height: 100px; background: red;"> |
| <x-tr><x-td style="width:0px;height:0px;"><div target=a style="width: 100%; height: 100px; background: blue"></div></x-td></x-tr> |
| <x-tr><x-td style="width:0px;height:0px;"><div target=a style="width: 100px; height: 0px"></div></x-td></x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetWidthEquals('a',100); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Percentages resolve based on the final row height</p> |
| <div> |
| <x-table style="width: 100px; height: 0px; background: red;"> |
| <x-tr> |
| <x-td style="width: 0px; height: 0px;"><div target=a style="width: 100px; height: 100%; background: blue"></div></x-td> |
| <x-td style="width: 0px; height: 0px;"><div target=a style="width: 0px; height: 100px; background: red"></div></x-td> |
| </x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetHeightEquals('a',100); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a blue and cyan rectangles of the same width:</p> |
| <p>Unresolvable percentage widths are resolved as auto in first pass (replaced elements)</p> |
| <div> |
| <x-table style="width: 0px; height: 18px; background: red;"> |
| <x-tr><x-td><input target=a style="width: 100%; height: 100%; background: blue; vertical-align: top; appearance:none; -webkit-appearance:none; border:0;margin:0;padding:0;"/></x-td></x-tr> |
| </x-table> |
| <input style="background:cyan; appearance:none; -webkit-appearance:none; border:0;margin:0;padding:0;" /> |
| </div> |
| <script> |
| |
| assertOffsetWidthEquals('a',document.querySelector('input[style="background:cyan; appearance:none; -webkit-appearance:none; border:0;margin:0;padding:0;"]').offsetWidth); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a blue and cyan rectangles below of the same height:</p> |
| <p>Unresolvable percentage heights are resolved as auto in first pass (replaced elements)</p> |
| <div> |
| <x-table style="width: auto; height: 0px; background: red;"> |
| <x-tr><x-td><input target=a style="width: 100%; height: 100%; background: blue; vertical-align: top; appearance:none; -webkit-appearance:none; border:0;margin:0;padding:0;"/></x-td></x-tr> |
| </x-table> |
| <input style="background:cyan; appearance:none; -webkit-appearance:none; border:0;margin:0;padding:0;" /> |
| </div> |
| <script> |
| |
| assertOffsetHeightEquals('a',document.querySelector('input[style="background:cyan; appearance:none; -webkit-appearance:none; border:0;margin:0;padding:0;"]').offsetHeight); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Unresolvable percentage widths are resolved as auto in first pass (unscrollable overflow)</p> |
| <div> |
| <x-table style="width: 0px; height: 100px; background: red;"> |
| <x-tr><x-td><div target=a style="width: 100%; height: 100px; background: blue; overflow: hidden;"><div target=a style="width: 100px; height: 0px"></div></div></x-td></x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetWidthEquals('a',100); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Unresolvable percentage heights are resolved as auto in first pass (unscrollable overflow)</p> |
| <div> |
| <x-table style="width: 100px; height: 0px; background: red;"> |
| <x-tr> |
| <x-td><div target=a style="width: 100px; height: 100%; background: blue; overflow: hidden;"><div target=a style="width: 0px; height: 100px; background: red"></div></div></x-td> |
| </x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetHeightEquals('a',100); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Unresolvable percentage widths are resolved as auto in first pass (scrollable overflow)</p> |
| <div> |
| <x-table style="width: 0px; height: 100px; background: red;"> |
| <x-tr><x-td><div target=a style="width: 100%; height: 100px; background: blue; overflow: auto;"><div target=a style="width: 100px; height: 0px"></div></div></x-td></x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetWidthEquals('a',100); |
| |
| </script> |
| |
| |
| <hr/><!------------------------------------------------------------------------------------------------------------> |
| <p>There should be a 100px blue square below:</p> |
| <p>Unresolvable percentage heights are resolved as 0px in first pass (scrollable overflow)</p> |
| <div> |
| <x-table style="width: 100px; height: 100px; background: red;"> |
| <x-tr><x-td><div target=a style="width: 100px; height: 100%; background: red; overflow: auto;"><div target=a style="width: 0px; height: 100px; background: red"></div></div></x-td></x-tr> |
| <x-tr><x-td><div style="width: 100px; height: 100%; background: blue; overflow: hidden;"><div target=a style="width: 0px; height: 100px; background: red"></div></div></x-td></x-tr> |
| </x-table> |
| </div> |
| <script> |
| |
| assertOffsetHeightEquals('a',0); |
| |
| </script> |
| |
| </main> |