<!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/#visibility-collapse-cell-rendering"> <style> table { border-spacing: 0; border-collapse: collapse; } table td { border: 1px solid blue; padding: 5px; } </style> <main> <h1>Visibility collapse</h1> <a href="https://drafts.csswg.org/css-tables-3/#visibility-collapse-cell-rendering">Spec</a> <p> Setting a row to visibility:collapse changes table height but not width. Here, the spanning cell is the only cell in its row. </p> <table id="one"> <tr id="spanningRowRef"> <td rowspan="5">B<br>B<br>B<br>B<br>B</td> </tr> <tr id="firstRowRef"> <td>aaaa</td> </tr> <tr> <td>bbbb</td> </tr> <tr id="thirdRowRef"> <td>cccc</td> </tr> <tr id="fourthRowRef"> <td>dddd</td> </tr> </table> Bottom table is identical to top except second row has been collapsed. The spanning cell's height shrinks and is clipped. <table id="two"> <tr id="spanningRow"> <td rowspan="5" id="spanningCell">B<br>B<br>B<br>B<br>B</td> </tr> <tr id="firstRow"> <td>aaaa</td> </tr> <tr id="secondRow" style="visibility: collapse"> <td>bbbb</td> </tr> <tr id="thirdRow"> <td>cccc</td> </tr> <tr id="fourthRow"> <td>dddd</td> </tr> </table> This text should not intersect with the table. </main> <script> tests = [ [ document.getElementById('two').offsetWidth, document.getElementById('one').offsetWidth, "spanning row visibility:collapse doesn't change table width" ], [ document.getElementById('fourthRow').offsetHeight, document.getElementById('fourthRowRef').offsetHeight, "fourth row stays the same height" ], [ document.getElementById('thirdRow').offsetHeight, document.getElementById('thirdRowRef').offsetHeight, "third row stays the same height" ], [ document.getElementById('secondRow').offsetHeight, 0, "spanning row visibility:collapse makes row height 0" ], [ document.getElementById('firstRow').offsetHeight, document.getElementById('firstRowRef').offsetHeight, "first row stays the same height" ], [ document.getElementById('spanningCell').offsetHeight, document.getElementById('firstRow').offsetHeight + document.getElementById('thirdRow').offsetHeight + document.getElementById('fourthRow').offsetHeight, "spanning cell shrinks to sum of remaining three rows' height" ]]; for (i = 0; i< tests.length; i++) { test(function() { assert_equals.apply(this, tests[i]); }, tests[i][2]); }; </script> </html>