<!doctype html> <meta charset="utf-8"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <link rel='stylesheet' href='support/base.css' /> <link rel="author" title="Joy Yu" href="mailto:joysyu@mit.edu"> <link rel="help" href="https://drafts.csswg.org/css-tables-3/#computing-the-table-height"> <style> table { border-spacing: 0; border-collapse: separate; } table td { border: 1px solid blue; padding: 5px; } </style> <main> <h1>Visibility collapse</h1> <a href="https://drafts.csswg.org/css-tables-3/#computing-the-table-height">Spec</a> <p> Setting a row to visibility:collapse changes table height but not width. Here the spanning cell and another cell are in the same row. </p> <table id="one"> <tr id="firstRowRef"> <td>aaaa</td> </tr> <tr id="secondRowRef"> <td>bbbb</td> </tr> <tr id="collapsedRowRef"> <td rowspan="2">spanning</td> <td>cccc</td> </tr> <tr id="fourthRowRef"> <td>dddd</td> </tr> <tr id="fifthRowRef"> <td>eeee</td> </tr> </table> Bottom table is identical to top except third row has been collapsed. <table id="two"> <tr id="firstRow"> <td>aaaa</td> </tr> <tr id="secondRow"> <td>bbbb</td> </tr> <tr style="visibility:collapse;" id="collapsedRow"> <td rowspan="2">spanning</td> <td>cccc</td> </tr> <tr id="fourthRow"> <td>dddd</td> </tr> <tr id="fifthRow"> <td>eeee</td> </tr> </table> </main> <script> tests = [ [ document.getElementById('two').offsetWidth, document.getElementById('one').offsetWidth, "spanning row visibility:collapse doesn't change table width" ], [ document.getElementById('collapsedRow').offsetHeight, 0, "collapsed row has zero height" ], [ document.getElementById('firstRow').offsetHeight, document.getElementById('firstRowRef').offsetHeight, "first row height doesn't change" ], [ document.getElementById('secondRow').offsetHeight, document.getElementById('secondRowRef').offsetHeight, "second row height doesn't change" ], [ document.getElementById('fourthRow').offsetHeight, document.getElementById('fourthRowRef').offsetHeight, "fourth row height doesn't change" ], [ document.getElementById('fifthRow').offsetHeight, document.getElementById('fifthRowRef').offsetHeight, "fifth row height doesn't change" ]]; for (i = 0; i< tests.length; i++) { test(function() { assert_equals.apply(this, tests[i]); }, tests[i][2]); }; </script> </html>