Skip to content

Commit 7f2e0b4

Browse files
committed
[css-tables] Fragmentation: accomodated layout tables
1 parent 415038d commit 7f2e0b4

4 files changed

Lines changed: 833 additions & 9 deletions

File tree

css-tables-3/Overview.bs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2376,26 +2376,38 @@ spec:css21; type:property; text:max-width
23762376

23772377
<p>
23782378
When fragmenting a table, user agents must attempt
2379-
to preserve table cells unfragmented.
2379+
to preserve the table rows unfragmented
2380+
if their height is at least twice smaller than the table width.
2381+
Other rows are said <dfn id="freely-fragmentable">freely fragmentable</dfn>.
23802382

23812383
<p>
23822384
When a table doesn't fit entirely in a fragmentainer,
2385+
and the first row that does not fit in the fragmentainer is not <a>freely fragmentable</a>.
23832386
the user agent has to insert some vertical gap
23842387
between the rows located before and at the overflow point
23852388
such that the two rows end up separated in sibling fragmentainers.
2389+
Cells spanning across those two rows are
2390+
divided into two fragments (one in each fragmentainer),
2391+
whose height is kept equal to the rows they span in each of these fragments, and
2392+
their content is fragmented among those two fragments, in parallel.
23862393

2387-
<p class="issue">
2388-
Add a figure clarifying this.
2394+
<figure>
2395+
<img src="./images/CSS-Tables-Fragmentation-1.svg" style="width:100%; max-width: 500px;" />
2396+
<figcaption>Expected rendering of table fragmented across two pages</figcaption>
2397+
</figure>
23892398

23902399
<p>
2391-
When there is no row fitting entirely in the current fragmentainer,
2392-
user agents must split each cell of the row among the two fragmentainers
2393-
so that all fragments in the same fragmentainer preserve the same height.
2400+
When there is no row fitting entirely in the current fragmentainer
2401+
or when the first row that does not fit in the fragmentainer is <a>freely fragmentable</a>,
2402+
user agents must split each cell of the row in two fragments (one in each fragmentainer)
2403+
so that all fragments in the same fragmentainer continue to share the same height.
23942404
Then, the user agent must fragment the content of each cell
2395-
among its two fragments in parallel.
2405+
among its two fragments, in parallel.
23962406

2397-
<p class="issue">
2398-
Add a figure clarifying this.
2407+
<figure>
2408+
<img src="./images/CSS-Tables-Fragmentation-2.svg" style="width:100%; max-width: 500px;" />
2409+
<figcaption>Expected rendering of table containing a tall row fragmented across two pages</figcaption>
2410+
</figure>
23992411

24002412
<p>
24012413
When 'break-before' or 'break-after' is applied
@@ -2420,6 +2432,11 @@ spec:css21; type:property; text:max-width
24202432
leave room and if needed render the table top border.
24212433
The same applies for footer rows and the table bottom border.
24222434

2435+
<figure>
2436+
<img src="./images/CSS-Tables-Repeating-Headers.svg" style="width:100%; max-width: 500px;" />
2437+
<figcaption>Expected rendering of table with headers and footers fragmented across two pages</figcaption>
2438+
</figure>
2439+
24232440
<p>
24242441
When doing so doesn't leave enough space to insert at least one content row,
24252442
users agents must drop the repeated footer.
Lines changed: 87 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)