[csswg-drafts] Algorithm for computing GRID_MIN from column %ge size is not well defined (#5816)

atotic has just created a new issue for https://github.com/w3c/csswg-drafts:

== Algorithm for computing GRID_MIN from column %ge size is not well defined ==
https://www.w3.org/TR/css-tables-3/#computing-the-table-width
Compute standard GRID_MIN/GRID_MAX. 

Standard does not specify in detail how to handle column percentages.
"a percentage represents a constraint on the column's inline size, which a
UA should try to satisfy"

While reimplementing tables in Chrome, I've discovered that following 
algorithm works:

Percentages cannot be resolved into pixels because size of containing
block is unknown. Instead, percentages are used to enforce following
constraints:
1) Column min inline size and percentage imply that total inline sum must
be large enough to fit the column. Mathematically, column with
min_inline_size of X, and percentage Y% implies that the
total inline sum MINSUM must satisfy: MINSUM * Y% >= X.
2) Let T% be sum of all percentages. Let M be sum of min_inline_sizes of
all non-percentage columns. Total min size sum MINSUM must satisfy:
T% * MINSUM + M = MINSUM.

All  major browsers (more or less) implement this the same way. I think standard should specify relationship between GRIDMIN/MAX and column percentages in detail.

#### There is a further issue with flex/grid/table cell ancestors:

The formula above can result in very large table minimum widths. For example:

    <table>
        <td style="width:1%"><div style="width:50px"></div></td>
    </table>

would result in 5000px GRIDMIN.

This works in block layout, because block layout forces table to never be wider than container width.

If table is a flex/grid child, this would result in a 5000px wide table, which is not what developers expect.
Major browsers have recognized this as a problem, and implemented non-standardized workarounds.
Most of the workarounds are a variation of 
"if table ancestor is flex/grid/table cell, ignore column percentages when computing GRIDMIN"

This exception should also be part of the standard.

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/5816 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Tuesday, 22 December 2020 07:56:01 UTC