- From: George Lund <G.A.Lund@bigfoot.com>
- Date: Tue, 31 Jul 2001 04:30:58 -0400 (EDT)
- To: www-style@w3.org
- Message-ID: <+V9NYoiscdZ7IAjx@lundbooks.co.uk>
In message <Pine.WNT.4.31.0107301305420.1044-100000@HIXIE.netscape.com>, Ian Hickson <ian@hixie.ch> writes >On Fri, 27 Jul 2001, George Lund wrote: >> >> What is needed is a mechanism for grouping CSS rules, such that either >> they are all rules in the group are applied or none are. > >How would this work? > >Given: > > @locked-together { > p * { color: green; } > div { background: white; } > } > > em { color: blue; } This is slightly bogus example because background and foreground colours should always be specified together. (My use of the word bogus here is not at all intended to be rude, in case I need to clarify.) Personally I think this is a rule that should actually be codified into the next version of CSS, but regardless of its technical status it should never be ignored. I think the issue is perhaps that determining whether a set of rules has succeeded is potentially complex and would need discussion. I'd also make the point that in real-life applications I have never found a need to use the * selector, and I haven't seen it used very often either. It is almost _too_ powerful. >What colour would the elements in the following example be? > > <div> > <p> > He said > <q> > <strong>Hello</strong> > <em>Gorgeous!</em> > </q> > to his cat. > </p> > </div> > I *think* I would treat the @locked-together group as having succeeded, because the rule doing the over-riding occurs _after_ the @locked-together group. Avoiding back-tracking would probably be advantageous anyway in terms of efficiency I'd guess. Any such approach would clearly have to be formalised carefully. Given that any rules appearing after an author @locked-together group must also be author rules, it seems reasonable to imagine that the author could take sufficient care over the intended effect without having to rely on cancelling his/her own rule groups. Thus the example given would be treated as if the all the rules followed consecutively with no complications i.e. p * { color: green; } div { background: white; } em { color: blue; } (assuming no _previous_ rule had overridden the application of the P * and div rules). Unfortunately having (maybe) successfully dodged the problem as set, the question of what would be the appropriate action if the @locked-together group had been in the user stylesheet arises. In that case it would be desirable to check the user style sheet to see if any of its grouped rules had been overridden at any point in the cascade. (The balance here is, I imagine, between: - the fact that few users would be likely to have such stylesheets - the efficiency with which the de-cascade could occur and - the amount of programming effort involved.) Another question would be whether the cancelling of the group would be total, or only applicable to specific document elements where its rules had been overridden. Regards -- George Lund
Received on Tuesday, 31 July 2001 10:51:52 UTC