Re: draft-ietf-html-style-00.txt & class as a general selector

lilley@afs.mcc.ac.uk writes:

 > > > [CLASS="foo"] { color: blue }
 > > > *.foo { color: blue }
 > > > .foo { color: blue }

 > In the third example, .  means "a class called" but this does not seem
 > to scale well, particularly when CSS is later used for other DTDs which
 > might not have a class attribute (or might have one that means something
 > else)

In CSS1, which is HTML-specific, '.' is a shorthand for "a class
called". CSS2 will introduce a way of declaring what attribute '.'
refers to:

  @archform CLASS

This is hidden in the formal grammer part of the specifications that
discusses CSS2.

 > Let's use @ and = for these, though the representation
 > could be some other token.  I just thought @ (at) was memorable for
 > "attribute" and = seemed obvious for "has the value"
 > 
 > We then have (spacing is up to you):
 > 
 >  bar { something }                  all bar elements
 >  
 >  bar @CLASS = foo { something }     all bar elements with class attribute foo
 >  bar @ID = foo { something }        all bar elements with id atribute foo
 >  bar @LANG = foo                    all bar elements with lang atribute foo 
 >                                        (and so on)
 >                                        
 >  @CLASS = foo { something }         all elements with class attribute foo

I like the '@' mnemonics. Perhaps we can rearrange our previous use of
the character..

 > Which seems fairly regular and easy to parse - properly bracketed.  Then
 > for notational convenience, when using CSS with HTML, we have the
 > following short forms:
 > 
 >  . means  @CLASS = 
 >  # means  @ID =         or whatever token is chosen

Having a shorthand for ID is not only a syntactical convenience;
knowing that the attribute is unique will help implementors. We were
thinking about a different shorthand:

  "x67y" { .. }

 > So
 >  
 >  bar.foo {something }         all bar elements with class attribute foo
 >  .foo { something }           all elements with class attribute foo
 >  #42 { something }            the element with id attribute  42
 > 
 > This gives a concise and regular notation, it seems.

Yes, and is very much in line with CSS thinking. A few questions
remain:

 - should one also allow the more verbose versions (CLASS=foo,
   ID=x67y) in CSS1?

 - what do people prefer, 
 -- #x65y or "x56y" ? 
 -- @CLASS=foo or [CLASS=foo] ?

Regards,

-h&kon

Hakon W Lie, W3C/INRIA, Sophia-Antipolis, France
http://www.w3.org/People/howcome  howcome@w3.org

Received on Friday, 8 December 1995 08:32:26 UTC