On Wednesday 30 July 2008 10:27, fantasai wrote:
> fantasai wrote:
> > Justin Rogers wrote:
> >> An @media block in the grammar is defined as a MEDIA_SYM followed
> >> by an LBRACE followed by optional rule-sets followed by an RBRACE.
> >> Because @media is a known at-block with pre-defined semantics we
> >> treat the grammar piece as absolute and I think other browsers do
> >> as well, but there is one discrepancy. Here is the test case and
> >> the results. ...
> >> So the question is, should the grammar in this case be read
> >> strictly since it clearly points out a semantic for the @media
> >> block, and thus only allow rule-sets making the Opera/IE 8
> >> behavior correct? Or should the parsers allow any statement within
> >> the block including the at-rule?
> >
> > Recorded as CSS2.1 Issue 62:
> > http://lists.w3.org/Archives/Public/www-style/2008Jun/0245.html
> >
> > I think we want Firefox's behavior here, as that is
> > forwards-compatible.
>
> Revised proposal:
> State in 7.2.1 that "At-rules inside @media are invalid in
> CSS2.1. Invalid at-rules inside @media blocks must be ignored
> per 4.2 Rules for handling parsing errors."
The "must ignore"Â part makes CSS3 UAs non-conformant with CSS 2.1. If
all UAs implement Paged Media tomorrow (as we want them to do...) then
we can never make a Rec for CSS 2.1 anymore, because there will be no
UA that ignores @page inside @media, as required by this proposal.
I think the problems to solve are:
1) CSS 2.1 section 7.2.1 is ambiguous and needs clarification. It says
the contents of @media is "a set of rules." What are "rules"? Does that
mean at-rules, rulesets, or both?
2) There is no text that forbids @page from appearing inside @media in
level 2 style sheets, it is only forbidden by the grammar in appendix
G. It has to be said in English somewhere.
When section 7.2.1 about @media was first written (in 1997), there was a
clear dislike of nesting. I think there still is, for reasons of
usability. But already then we had a Paged Media draft that nested
@page inside @media. So IÂ think we wanted level 2 style sheets to not
have at-rules inside at-rules, but without forbidding them for all
time.
And thus section 7.2.1 should be interpreted as saying that "rules"
means both at-rules and rulesets. But a level 2 UA is allowed to ignore
the at-rules.
So here is my cleaned-up version of Fantasai's proposal. Change in
7.2.1:
a set of rules (delimited by curly braces).
to
a set of statements (delimited by curly braces). CSS 2.1 UAs may
ignore at-rules inside @media blocks. Invalid at-rules must be
ignored per 4.2 Rules for handling parsing errors.
"Statements" may be hyperlinked to section 4.1.1, for extra clarity.
Bert
--
Bert Bos ( W 3 C ) http://www.w3.org/http://www.w3.org/people/bos W3C/ERCIM
bert@w3.org 2004 Rt des Lucioles / BP 93
+33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France