- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Fri, 28 May 2010 20:34:07 -0700
- To: <www-style@w3.org>
It seems that I am the only person so far who have implemented
flex units as a complete system. I mean I have infrastructure already in
place to try the calc() in real environment. So here are practical
questions.
1) Meaning of "free space".
I am assuming that free space gets computed as:
container-inner-space - sum-of-min-widths-of-children.
So if sum-of-min-widths-of-children is greater than
container-inner-space then
1.a) there is no free space, free space is zero;
1.b) there is a free space but it is negative, if "yes"
then it is not a free space strictly speaking.
Good name for it anyone?
Anyway, which one of 1.a) and 1.b) is true?
2) Meaning of calc(flex + fixed)
Let's imagine that we have container with
inner width = 1000px that has single empty child A
so it has no intrinsic min/max-widths.
-----------------------------------------------------------------
If that A element is defined as
A { width: calc(100px + 1fx); }
I assume that min-widths-of-children in this case is:
2.a) min-width = 100px, free-space = 900px.
So its computed width is just 1000px ?
So that definition above is exactly (A - single child)
A { width: 1fx; min-width: 100px; }
Yes/no?
-----------------------------------------------------------------
If A element is defined as
A { width: calc(1100px + 1fx); }
2.b) min-width = 1100px, free-space = -100px so element
will not overflow as total width = 1000px;
2.c) min-width = 1100px, free-space = 0px and element
will overflow;
If 2.c is true then it means that free-space as a value
cannot be negative.
-----------------------------------------------------------------
Now let's add min-width constraints in our equations
A
{
width: calc(100px + 1fx);
min-width: 900px;
}
2.d)
min-width = 900px,
free-space = 100px and
width = 900px.
2.e)
min-width = 900px + 100px,
free-space = 0px and
width = 1000px.
-----------------------------------------------------------------
Here is over constrained case
A
{
width: calc(100px + 1fx);
min-width: 1100px;
}
2.f)
min-width = 1100px,
free-space =0px and
width = 1100px,
2.g)
min-width = 1100px,
free-space = -100px and
width = 1000px.
If 2.g then it means that element dimensions can
be less than its min constraints.
If 2.f then it means, again, free-space cannot be negative.
-----------------------------------------------------------------
Here is one more, but with max-width constrain
A
{
width: calc(300px + 1fx);
max-width: 200px;
}
What is the value of free space for the need of flex calculations?
2.h) 1000px - 300px = 700px?
2.i) 1000px - 200px = 800px?
-----------------------------------------------------------------
Consider these two elements in the same 1000px container:
A { width: calc(700px + 1fx); }
B { width: calc(500px + 1fx); }
what would be their computed widths?
I assume that:
2.j) 700px and 500px
so again free space is non-negative.
of the are
2.k) 583px and 417px and so we are getting
XUL's additive logic here?
-----------------------------------------------------------------
So if to assume that free space is always non-negative
that leads us to the constatation of the following:
any expression with flex units can only increase
minimal value and never decrease.
So constructions like calc( 20px - 1fx) shall be prohibited.
Sigh. I think that I am ready to start using
'calc(-1fx)' as an emoticon that means "can of worms".
--
Andrew Fedoniouk
http://terrainformatica.com
--
Andrew Fedoniouk
Terra Informatica Software, Inc.
Received on Saturday, 29 May 2010 03:34:40 UTC