Stefan Bucher: Underline in Class-Selector erlaubt?

Ist ein Underline-Zeichen ("_") in einem Klassen-Selektor erlaubt?

Ich habe mein Style-Sheet bei W3C online validieren lassen und erhielt einen Parsing-Error beim Selktor ".navig_table"
Liegt es am Underline-Zeichen?

Danke für irgendwelche Hinweise.

Stefan

  1. Moin!

    Ist ein Underline-Zeichen ("_") in einem Klassen-Selektor erlaubt?

    Jein. Und genau das ist das Problem.

    Ursprünglich war es nicht erlaubt. Irgendeine spätere Standardversion hatte es dann plötzlich erlaubt - was prompt im IE eingebaut wurde. Wie der aktuelle Stand im Standard lautet, weiß ich nicht, aber das ist auch egal: Wenn du funktionierende Stylesheets schreiben willst, benutze KEINEN UNTERSTRICH!

    Der Validator bemeckert es, also wird es verboten sein.

    - Sven Rautenberg

    --
    Diese Signatur gilt nur am Freitag.
    1. Hi,

      Ursprünglich war es nicht erlaubt. Irgendeine spätere Standardversion hatte es dann plötzlich erlaubt - was prompt im IE eingebaut wurde.

      Falsch. Herleitung siehe oben.
      In HTML darf das class-Attribut zwar CDATA (mehrere Whitespace-getrennte Klassennamen) ohne nähere Spezifizierung haben. Aber CSS macht die Beschränkung.

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  2. Hi,

    Ist ein Underline-Zeichen ("_") in einem Klassen-Selektor erlaubt?

    Nein, im class-Selektor ist _ nicht erlaubt, wie ein Blick in die Grammatik und den Lexical Scanner von CSS2 zeigt (hier nur die relevanten Zeilen zitiert):

    class
      : '.' IDENT

    ident  {nmstart}{nmchar}*
    nmstart  [a-z]|{nonascii}|{escape}
    nmchar  [a-z0-9-]|{nonascii}|{escape}
    nonascii [\200-\377]
    escape  {unicode}|\[ -~\200-\377]
    unicode  \{h}{1,6}[ \t\r\n\f]?

    (der Scanner unterscheidet nicht zwischen Groß- und Klein-Buchstaben)

    Der Unterstrich taucht hier nirgends auf, darf also nicht verwendet werden - in keinem Identifier in CSS, nicht nur in Klassennamen.

    Nachzulesen unter http://www.w3.org/TR/REC-CSS2/grammar.html

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    1. Hallo,

      Nein, im class-Selektor ist _ nicht erlaubt, wie ein Blick in die Grammatik und den Lexical Scanner von CSS2 zeigt (hier nur die relevanten Zeilen zitiert):

      In einem Errata-Dokument werden Unterstriche erlaubt: http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html. Man sollte aber dennoch auf Unterstriche in Klassennamen und IDs verzichten, um Probleme mit aelteren Browsern zu vermeiden.

      MfG, Thomas

      1. Hi,

        In einem Errata-Dokument werden Unterstriche erlaubt: http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html.

        Ups, übersehen.
        Aber dann arbeitet der Validator fehlerhaft bzw. auf der unkorrigierten Version...

        »»Man sollte aber dennoch auf Unterstriche in Klassennamen und IDs verzichten, um Probleme mit aelteren Browsern zu vermeiden.

        Dem kann ich auf jeden Fall zustimmen.

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.