- From: Alex Mogilevsky <alexmog@microsoft.com>
- Date: Tue, 8 May 2012 02:36:23 +0000
- To: "www-style@w3.org" <www-style@w3.org>
A "division" formula that I proposed for negative flexibility earlier [1] was incorrect, it would not get a continuous scaling. Correct formula for the desired result: space-shortage = sum(flex-basis) - available-space shrink-factor = space-shortage / sum(flex-basis * negative-flex)) main-size = flex-basis * (1 - shrink-factor * negative-flex)) With this, bigger items shrink faster and items of same flex keep same relative size when shrinking. Example 1: <div id="Flexbox" style="display:flex"> <div id="A" style="flex:1 1 100px"></div> <div id="B" style="flex:1 1 500px"></div> </div> Linear shrinking: Flexbox A B 600 100 500 500 50 450 400 0 400 300 0 300 200 0 200 100 0 100 Proportional shrinking: Flexbox A B 600 100 500 500 83 417 400 67 333 300 50 250 200 33 167 100 17 83 I think "proportional" is a much better behavior. Note that the most useful behavior is when 'flex-shrink' is same on all flexible items. Considering that 'flex-grow' is rarely anything other than 0 or 1 and that with this formula equal flexibility works well for shrinking, * "flex:auto" should be same as "flex:1 1 auto" (instead of "1 0 auto") * "flex:N" should be same as "flex:N N 0px" (instead of "N 0 0px") [1] http://lists.w3.org/Archives/Public/www-style/2012Apr/0692.html Alex
Received on Tuesday, 8 May 2012 02:37:26 UTC