- From: Zack Weinberg <zweinberg@mozilla.com>
- Date: Fri, 28 May 2010 09:26:29 -0700
- To: "Andrew Fedoniouk" <news@terrainformatica.com>
- Cc: "W3C Emailing list for WWW Style" <www-style@w3.org>
"Andrew Fedoniouk" <news@terrainformatica.com> wrote:
> >
> > Nonsense. <length> is not part of the generic syntax; adding new
> > <length> productions does not of itself require any change to the
> > generic syntax, as long as what you add is a possible <any>
> > production, which '1fl' is and '1*' isn't.
>
> Are we using the same document:
> http://www.w3.org/TR/CSS21/grammar.html#scanner
Oh. You're looking at Appendix G. Appendix G is NOT
the generic syntax. The generic syntax is here:
http://www.w3.org/TR/CSS21/syndata.html#tokenization
and the relevant bits are
NUMBER {num}
PERCENTAGE {num}%
DIMENSION {num}{ident}
declaration : property S* ':' S* value;
value : [ any | block | ATKEYWORD S* ]+;
any : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING
| DELIM | URI | HASH | UNICODE-RANGE | INCLUDES
| DASHMATCH | ':' | FUNCTION S* any* ')'
| '(' S* any* ')' | '[' S* any* ']' ] S*;
(Maybe I should have said "core syntax" instead?) Anyway, the
Appendix G grammar can be, and indeed already has been, modified
by Level 3 modules, but the section 4 grammar is not supposed to
change, and
top: 2*;
is not a valid 'declaration' per the section 4 grammar.
> > I don't get it. Either you are saying flex(10px, 1*) is easier to
> > understand at a glance than calc(10px + 1fl), or else you are saying
> > that the latter would be harder to implement. But both of those
> > assertions are ridiculous.
>
> How many times you need to execute this expression:
>
> width: calc(10px / 2 + 2 * 1fl);
>
> to get the result?
No more nor less than with your proposal. You constant-fold it to
calc(5px + 2fl), which is exactly as hard to evaluate as flex(5px, 2fl).
In other words, from my perspective, allowing fl inside calc() is just
syntactic sugar for your proposal.
> Question to you:
> what will be computed min and max widths of this element:
>
> A { width: calc(10px + 1fl); min-width: 100px; max-width: 300px; }
I am not especially familiar for the rules for what happens if width,
min-width, and max-width are mutually contradictory. Naively, I'd
expect that to mean the same thing as
A { min-width: 100px; max-width: 300px; }
I do not see that flexes make resolving such contradictions any harder
than it already is, regardless of their semantics.
zw
Received on Friday, 28 May 2010 16:27:04 UTC