- From: Daniel Holbert <dholbert@mozilla.com>
- Date: Tue, 17 Apr 2012 15:37:57 -0700
- To: www-style <www-style@w3.org>
- CC: Alex Mogilevsky <alexmog@microsoft.com>, "Tab Atkins Jr." <jackalmage@gmail.com>
Resurrecting this thread from a month ago -- I don't believe anyone has
addressed this on the list. (and it looks like the ED hasn't changed to
address this, either)
Alex or Tab: as noted below, I'm pretty sure the logic is backwards here
-- could you take a look, and fix the spec if you agree?
Thanks,
~Daniel
On 03/09/2012 12:26 PM, Daniel Holbert wrote:
> Hi www-style,
>
> I think the current Flexbox Layout Algorithm has some words reversed
> right now, in such a way that it'd never terminate if it were to be
> implemented as-written.
>
> It currently says:
> {{
> 4. Distribute free space proportional to flex
> [...]
> 5. Fix min/max violations:
> 1. Adjust each flexible item for min/max.
> 2. If the size has changed, it is a violation.
> 3. The violation may be positive (min violation) or
> negative (max violation). Accumulate the difference.
>
> 6. If the sum of all violations is:
> Zero: Exit the algorithm.
> Positive: Freeze items with max violations, and return to step 2.
> Negative: Freeze items with min violations, and return to step 2.
> }}
> http://dev.w3.org/csswg/css3-flexbox/#resolve-the-flexible-lengths
>
>
> TL;DR; I think min/max are reversed in step 6 there.
>
>
> MORE DETAILS / AN EXAMPLE:
> ==========================
> Suppose we're in a situation with two flexbox items, both flex:1 0 0px,
> and we have plenty of extra space to distribute. One of our items is
> constrained by a max-width. (and that's the only min/max limit in play)
>
> Suppose there's enough free space that we violate the item's max-width
> in Step 4.
>
> So -- when we hit Step 5, we'll reduce that item's size to match its
> max-width. This is a "negative (max violation)" according to 5.3 above.
>
> That was the only violation -- so in step 6, the sum of all violations
> is negative.
>
> Given that, step 6 says we should "Freeze items with min violations..."
> (uh oh, we didn't have any of those!) "...and return to step 2".
>
> So we don't freeze anything, and we'll repeat the exact same steps and
> we'll hit the exact same violation over & over again, looping forever.
>
> If we swap "min" and "max" in step 6, then I think it makes sense &
> terminates.
>
> ~Daniel
>
Received on Tuesday, 17 April 2012 22:38:26 UTC