- From: Simon Sapin <simon.sapin@exyr.org>
- Date: Fri, 25 Apr 2014 18:18:25 +0100
- To: fantasai <fantasai.lists@inkedblade.net>, "www-style@w3.org" <www-style@w3.org>
This looks much nicer, thanks! A few comments / questions:
In §10.3 Initialize Track Sizes:
> Initialize each track’s base size and growth limit. For each track,
> if the track’s min track sizing function is:
>
> * For fixed track sizes, resolve to an absolute length and use that
> size.
Use that size for both the initial base size and the initial growth limit?
Also, the "If XX is: / For YY, …" wording doesn’t really work. Maybe
"Depending on XX: / For YY, …" or "If XX is: / A YY, …"
> * For intrinsic track sizes, use an initial base size of zero and an
> initial growth limit of infinity.
> * For flexible track sizes, use an initial base size of infinity.
>
> A track with a flexible minimum sizing function is treated exactly as
> if it had a fixed min track sizing function of zero; except when the
> grid container is being sized under a min-content constraint, in
> which case it is treated exactly as min-content.
Isn’t that paragraph in contradiction with the last bullet point above?
Do "<em>minimum</em> <i>sizing function</i>" and "<i>min track sizing
function</i>" (in Bikeshed markup) refer to the same thing? If so, it
may be preferable to use the same markup and cross-reference links.
In §10.4 Resolve Content-Based Track Sizing Functions:
> Note: […] This algorithm may be updated in the future to take into
> account more advanced heuristics as they are identified.
Hopefully I don’t need to, but I’ll point out that once web content
starts to depend on this algorithm, we may not be able to change it
without breaking something.
In the "Increase sizes to accommodate spanning items" sub-algorithm, the
first sub-step has a bold label "For min-content minimums", but then
affects tracks with either min-content or max-content minimums.
Same for the third sub-step "For min-content maximums".
It seems that it’s the labels that should be fixed, since the list is
ordered and the order only matters if the sets of affected tracks are
not disjoint.
> (This prevents the size increases from becoming order-dependent.)
Is this referring to the order of the grid items?
> Distribute the space equally to the planned increase of each spanned
> track with an affected size, freezing tracks as their planned size
> reaches their growth limits (and continuing to grow the unfrozen
> tracks as needed).
What does "their planned size reaches their growth limits" means when
the affected size *is* the growth limit?
Also, I don’t quite understand what this freezing is about. The "as […]
reaches" and "continuing" wording implies a flow of time, while CSS is
stateless. I can guess what is intended by imagining pouring a fixed
amount of liquid (extra space) into a number of buckets (tracks) at an
equal rate, and stopping with a given bucket when it’s full (thus
increasing the amount of remaining space-liquid for each of the
remaining tracks-buckets.)
But I shouldn’t have to guess, and the spec perhaps shouldn’t use my
liquid metaphor :)
I suppose the spec should spell out an iterative algorithm rather than
try to condense it in one sentence with "freezing" tracks. It would
possibly look like:
While extra-space > 0 and len(tracks) > 0:
increase = min(
extra-space / len(tracks),
min(track.growth-limit - track.planned-increase
for track in tracks))
extra-space -= increase * len(tracks)
for track in tracks:
track.planned-increase += increase
if track.planned-increase == track.growth-limit:
remove track for tracks
The above is just my guess and may be wrong. And I’m sure it can be
expressed more nicely :)
> If a track was marked as infinitely growable for this phase, treat
> its growth limit as infinite for this calculation (and then unmark
> it).
The earlier occurrence of "infinitely growable" should be a <dfn>, and
this one should link to it.
> (If the growth limit is infinite, set it to the track’s base size
> plus the calculated increase.)
Does this apply always, or only when the affected size is a growth limit?
> At this point, all intrinsic base sizes and growth limits will have
> been resolved to absolute lengths.
Is "this point" the end of a single invocation of "distribute extra
space", or the end of "Resolve Content-Based Track Sizing Function"?
In §10.5 Grow All Tracks To Their Max
> If the free space is positive, distribute it equally to all tracks,
> freezing tracks as they reach their growth limits (and continuing to
> grow the unfrozen tracks as needed).
Same comment about "freezing" than above. Perhaps this could be a named
sub-algorithm used in two places.
In §10.6.1 Find the Size of an fr
> Let leftover space be the space to fill minus the base sizes of all
> the non-flexible grid tracks.
Does "all the non-flexible grid tracks" mean all in the grid, or all in
the input to this sub-algorithm? I suppose only the latter makes sense,
but "all" is misleading. Perhaps just removing "all" is enough.
(Same for two occurrences of "all flexible tracks".)
> For all flexible tracks, if the product of the hypothetical flex
> fraction and the track’s flex factor is less than the track’s base
> size, restart this algorithm treating all such tracks as having a
> flex factor of zero.
Restart if *any* or *all* of the flexible tracks have a greater product
than base size? Does "such" refer to all flexible tracks, or only those
with a greater product?
--
Simon Sapin
Received on Friday, 25 April 2014 17:18:49 UTC