T-Rex: Klammern in css namen

Hoi Leute,

wollte nur mal schnell fragen ob die Validatoren Klammern in CSS Namen aktzeptieren?
also z.B. sowas class='test()'

Danke
Gruß T-Rex

  1. Hi,

    wollte nur mal schnell fragen ob die Validatoren Klammern in CSS Namen aktzeptieren?
    also z.B. sowas class='test()'

    das class-Attribut ist Teil von HTML und hat exakt gar nichts mit CSS zu tun. Die Antwort lautet: Ja, die Klammern sind valide. Der Zusatz lautet: Sie sind aber nicht empfehlenswert, weil HTML-Klassen von vielerlei Systemen und Techniken verwendet werden, die potenziell Probleme damit haben können.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah

      In wie weit kann es Probleme geben? Kannst du da ein wenig konkreter werden?

      Danke
      T-Rex

      1. Hellihello

        In wie weit kann es Probleme geben? Kannst du da ein wenig konkreter werden?

        Vielleicht hat es der ein oder andere Browser doch nicht im Spektrum? Oder kapiert das nicht beim Umsetzen des Stylesheets?

        Valide ist es, weil beim w3c der Inhalt als CDATA klassifziert ist http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

        Dank und Gruß,

        frankx

        --
        tryin to multitain  - Globus = Planet != Welt
        1. Hi,

          In wie weit kann es Probleme geben? Kannst du da ein wenig konkreter werden?
          Vielleicht hat es der ein oder andere Browser doch nicht im Spektrum? Oder kapiert das nicht beim Umsetzen des Stylesheets?

          oder er stolpert beim Auswerten als className-Eigenschaft, oder ein Suchmaschinen-Bot versagt bei dem Versuch, den Bezeichner in seinen Index zu übernehmen, oder ...

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Hi,

            In wie weit kann es Probleme geben? Kannst du da ein wenig konkreter werden?
            Vielleicht hat es der ein oder andere Browser doch nicht im Spektrum? Oder kapiert das nicht beim Umsetzen des Stylesheets?

            oder er stolpert beim Auswerten als className-Eigenschaft, oder ein Suchmaschinen-Bot versagt bei dem Versuch, den Bezeichner in seinen Index zu übernehmen, oder ...

            Cheatah

            Also mit anderen Worte:

            man darf sich nicht darauf verlassen, dass die css Klasse geladen wird?
            wie sieht es mit folgendem Beispiel aus:
            class='red_text  test()'

            kann man davon ausgehen, dass red_text geladen wird?

            Gruß
            T-Rex

            1. Hi,

              man darf sich nicht darauf verlassen, dass die css Klasse geladen wird?

              es gibt keine CSS-Klassen. Es sind *HTML*-Klassen. Mache Dir dies bewusst.

              wie sieht es mit folgendem Beispiel aus:
              class='red_text  test()'

              Dasselbe Problem, ergänzt durch ein Zusatzproblem mit antiker Software, ergänzt durch das Problem eines grottenschlechten Bezeichners. Was hat "red_text" mit HTML zu tun?

              kann man davon ausgehen, dass red_text geladen wird?

              Geladen? Nein. Ich wüsste jetzt nichts, was wegen einer HTML-Klasse irgendwas laden würde. Ausgeschlossen ist es natürlich nicht - beziehst Du Dich auf eine spezielle Software?

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Hi,

                man darf sich nicht darauf verlassen, dass die css Klasse geladen wird?

                es gibt keine CSS-Klassen. Es sind *HTML*-Klassen. Mache Dir dies bewusst.

                wie sieht es mit folgendem Beispiel aus:
                class='red_text  test()'

                Dasselbe Problem, ergänzt durch ein Zusatzproblem mit antiker Software, ergänzt durch das Problem eines grottenschlechten Bezeichners. Was hat "red_text" mit HTML zu tun?

                kann man davon ausgehen, dass red_text geladen wird?

                Geladen? Nein. Ich wüsste jetzt nichts, was wegen einer HTML-Klasse irgendwas laden würde. Ausgeschlossen ist es natürlich nicht - beziehst Du Dich auf eine spezielle Software?

                Cheatah

                Hi

                nö keine spezielle Software.
                Ich möchte einen Text oder ein Inputfeld oder sonst irgendwas mit css stylen und die einfache Frage ist, ob die Klasse "red_text" geladen(oder angezeigt oder was auch immer) wird, wenn dahinter die "unsichere" Klasse test() steht.

                <div class='red_text test()'>roter Text</div>

                "roter Text" soll einfach rot sein.

                Gruß
                T-Rex

                1. Hallo T-Rex,

                  <div class='red_text test()'>roter Text</div>

                  "roter Text" soll einfach rot sein.

                  und wenn der Kunde den Text demnächst lieber blau haben will? Benennst du dann die Klasse um?

                  Gruß aus Köln-Ehrenfeld,

                  Elya

                  --
                  We are drowning in information but starved for knowledge. John Naisbitt
                  1. Hallo T-Rex,

                    <div class='red_text test()'>roter Text</div>

                    "roter Text" soll einfach rot sein.

                    und wenn der Kunde den Text demnächst lieber blau haben will? Benennst du dann die Klasse um?

                    Gruß aus Köln-Ehrenfeld,

                    Elya

                    Hi Elya

                    In meinem Beispiel gibts keinen Kunden. Es gibt nur ein div und zwei Klassen und die Frage ob der Text trotzdem rot wird obwohl eine "unsichere" Klasse dahinter steht!
                    Wenn "nein" wäre die nächste Frage wieso der Text nicht rot wird und ob es an "test()" liegt.

                    Gruß
                    T-Rex

                    1. In meinem Beispiel gibts keinen Kunden. Es gibt nur ein div und zwei Klassen und die Frage ob der Text trotzdem rot wird obwohl eine "unsichere" Klasse dahinter steht!

                      es gibt kein div und 2 klassen, es gibt ein div-element mit einem class-attribut, welches den wert "red_text test()" enthält

                      dass ein leerzeichen in einem attribut mit dem namen "class" in css als klasse interpretiert wird, ist eine völlig andere geschichte

                      genausogut könntest du <div irgendeineerfindung="red_text text()" /> schreiben (sofern das die dtd zulässt) und diese in css mittels dem attribut-selektor ansprechen

                      1. Du kannst es meinet wegen auch Div-Wurschtfinger nennen, dass ist mir "Wurscht" :D.
                        Ich denke das Beispiel ist eindeutig und die Fragestellung auch. In wie weit ich Fachbegriffe benutze oder nicht ist mir egal. Und wenn sich dem einen oder anderen der Gedanke aufdrängt das ich ein Trottel bin weil ich nicht div-Element sage sondern einfach nur div, dann kann er mir gerne eine mail schicken über seine Gedanken (bitte mit "spam" kennzeichnen ;).

                        Cheatah hat ja schon gesagt dass es im Validator keine Probleme gibt da er das ganze als cdata interpretiert. Jedoch (und das macht mir Angst und ich harke nach) meinte er/sie auch dass es zu eventuellen Problemen führen kann.
                        In wie weit andere Programme außer den Browsern drauf reagieren ist mir relativ "Wurscht".
                        Wichtig ist nur, dass neben der künstlichen Klasse "test()" vor allem die Klasse red_text richtig dargestellt wird.

                        Danke :)
                        Gruß T-Rex

                        Ps. Rechtschreibfehler und nicht fachgerechte Ausdrücke sind mein persönliches geistiges Eigentum!

                        1. nicht div-Element sage sondern einfach nur div

                          um das gings nicht - es geht um die unterscheidung zwischen klassen im sinne von css und um html, welches ein attribut kennt, welches zufällt "class" heisst und einen völlig "beliebigen" wert enthalten darf

                          Cheatah hat ja schon gesagt dass es im Validator keine Probleme gibt da er das ganze als cdata interpretiert. Jedoch (und das macht mir Angst und ich harke nach) meinte er/sie auch dass es zu eventuellen Problemen führen kann.

                          ja, weil je nach verarbeitungssystem "irgendwas" nicht erlaubt ist

                          du kannst problemlos <div class="123"> oder <div class="-foo"> schreiben, das ist valide und führt in html zu keinerlei problemen (da sich das class-attribut einen scheiss interessiert, was in css vorsich geht)- in css wirst du damit aber schwierigkeiten haben, da die auswertung des class-attributs zu css klassen führt, die eben so nicht sein dürfen

                          Wichtig ist nur, dass neben der künstlichen Klasse "test()" vor allem die Klasse red_text richtig dargestellt wird.

                          obs richtig dargestellt wird oder nicht spielt keine rolle, in html-kontext ist diese schreibweise völlig in ordnung, in css ist sie ein fehler - PUNKT

                          1. Yerf!

                            du kannst problemlos <div class="123"> oder <div class="-foo"> schreiben, das ist valide und führt in html zu keinerlei problemen (da sich das class-attribut einen scheiss interessiert, was in css vorsich geht)- in css wirst du damit aber schwierigkeiten haben, da die auswertung des class-attributs zu css klassen führt, die eben so nicht sein dürfen

                            Laut dem verlinkten Dokument ist das doch möglich und erlaubt? Man muss im CSS-Selektor nur entsprechend Escapen, aber das sollte doch selbstverständlich sein...

                            <div class="123">  
                            
                            
                            .\31 23 { }  
                            
                            
                            <div class="-foo">  
                            
                            
                            .\-foo { }  
                            
                            

                            Gruß,

                            Harlequin

                            --
                            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
                            1. Man muss im CSS-Selektor nur entsprechend Escapen, aber das sollte doch selbstverständlich sein...

                              das ist denke ich das was cheatah angesprochen hat: es kann je nach system zu problemen führen (er bzeichnet das als stolpern)

                              lt. spezifikation sind css-selektoren auch case-sensitive

                              .Warning und .warning sind nicht ident - wenn ich das richtig im kopf hab, nimmt das der ie6 aber nicht so genau

                              und insbesondere das das escapezeichen wird in vielen css-hacks als mittel zum zweck verwendet - verlassen sollte man sich darauf eben nicht

                              spontan fällt mir dieser hack ein:
                              w\idth: 100px;

                              1. Yerf!

                                und insbesondere das das escapezeichen wird in vielen css-hacks als mittel zum zweck verwendet - verlassen sollte man sich darauf eben nicht

                                Fehlerhafte CSS-Implementierungen sind ein Problem, aber nicht von CSS selbst. Ich könnte mir auch vorstellen, das manche JS-Scripte über solche Klassen stolpern.

                                Allerdings klangen deine Ausführungen so, als würde die CSS-Spec das nicht erlauben, was so nicht richtig ist.

                                Gruß,

                                Harlequin

                                --
                                <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
                                1. Allerdings klangen deine Ausführungen so, als würde die CSS-Spec das nicht erlauben, was so nicht richtig ist.

                                  das stimmt natürlich, da hab' ich mich unklar ausgedrückt :)

                                  dennoch bin ich der meinung, dass man bei der benennung von bezeichnern sogut wie möglich vermeiden sollte, viel herumzuescapen

                                  schlichte namen, buchstaben und zahlen

                                  was bringt es mir, wenn ein bezeichner bzw eine klasse "warnung(123)" heisst, wenn ich doch "warnung-123" auch schreiben kann

                                  wenn ich für diesen bezeichner dann noch ein bild brauche, welches zb warnung(123).png heisst, muss ich an allen ecken und enden escapen

                                  ich würde das eben aus purer faulheit/übersichtlichkeit schon nicht machen bzw um flüchtigkeitsfehler zu vermeiden

                                  alles kleinschreiben (man weiss nie ob etwas case-sensitive ist oder nicht), keine sonderzeichen, usw

                              2. Hi,

                                Man muss im CSS-Selektor nur entsprechend Escapen, aber das sollte doch selbstverständlich sein...
                                das ist denke ich das was cheatah angesprochen hat: es kann je nach system zu problemen führen (er bzeichnet das als stolpern)

                                jein, an der Stelle meinte ich eigentlich JavaScript-Implementierungen. Aber nur, weil die CSS-Implementierungen schon genannt worden waren ;-)

                                Cheatah

                                --
                                X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                                X-Will-Answer-Email: No
                                X-Please-Search-Archive-First: Absolutely Yes
                      2. Hi,

                        es gibt kein div und 2 klassen, es gibt ein div-element mit einem class-attribut, welches den wert "red_text test()" enthält

                        mit anderen Worten: ein <div> mit zwei Klassen.

                        dass ein leerzeichen in einem attribut mit dem namen "class" in css als klasse interpretiert wird, ist eine völlig andere geschichte

                        Es wird in HTML als Klasse angesehen. Nur dass HTML die daraus resultierenden Erkenntnisse nicht nutzt.

                        Cheatah

                        --
                        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                        X-Will-Answer-Email: No
                        X-Please-Search-Archive-First: Absolutely Yes
                        1. Es wird in HTML als Klasse angesehen. Nur dass HTML die daraus resultierenden Erkenntnisse nicht nutzt.

                          es stellt keine gültige css-klasse dar - somit keine klasse im css-kontext

                          "The class attribute, on the other hand, assigns one or more class names to an element; the element may be said to belong to these classes."

                          dem element werten klassennamen zugewiesen, keine klassen ansich - und der letzte satz: "mann kann sagen, dass sie diesen klassen angehören", dass sie es tatsächlich tun, steht eben nicht da :)

                          1. Hi,

                            es stellt keine gültige css-klasse dar - somit keine klasse im css-kontext

                            es gibt keine CSS-Klasse, und ein gültiger CSS-Selektor lässt sich ohne Weiteres formulieren.

                            dem element werten klassennamen zugewiesen, keine klassen ansich

                            Touché.

                            Cheatah

                            --
                            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                            X-Will-Answer-Email: No
                            X-Please-Search-Archive-First: Absolutely Yes
                    2. Mahlzeit T-Rex,

                      In meinem Beispiel gibts keinen Kunden. Es gibt nur ein div und zwei Klassen und die Frage ob der Text trotzdem rot wird obwohl eine "unsichere" Klasse dahinter steht!

                      Wieso probierst Du es nicht einfach aus? Wo ist das Problem, ein entsprechend abgespecktes Beispiel zusammenzuschustern, zwei entsprechende Klassendefinitionen in CSS anzulegen und einfach mal auszuprobieren, was die verschiedenen Browser daraus machen?

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                      1. Hi EKKi,

                        ein guter Vorschlag :).
                        Das mache ich ja schon die ganze Zeit, dennoch interessiert mich das Thema über den Tellerrand hinaus. Eventuell gibts es Fehler auf einem Gebiet was ich nicht beachte.
                        Ich wollte z.B. mal ein neues Attribut einführen <div test="irgendwas"></div>. die Browser haben damit kein Problem aber der Validator schon und was Google & Co. so treiben mag ich gar nicht dran denken.

                        Deshalb denke ich mir, frag ich mal die Profies im Profieforum :).

                        Gruß
                        T-Rex

                        1. Ich wollte z.B. mal ein neues Attribut einführen <div test="irgendwas"></div>.

                          neue attribute einzuführen solltest du dem w3c oder den browserherstellern überlassen :)

                          die Browser haben damit kein Problem aber der Validator schon und was Google & Co. so treiben mag ich gar nicht dran denken.

                          google & co ist das sicher "scheissegal" da sich die wenigsten webautoren um standards kümmern, bei invalidem code darfst du allerdings keinesfalls von korrekter darstellung ausgehen

                    3. Hi,

                      In meinem Beispiel gibts keinen Kunden. Es gibt nur ein div und zwei Klassen und die Frage ob der Text trotzdem rot wird obwohl eine "unsichere" Klasse dahinter steht!

                      verwende Bezeichner, die im Sinne von HTML sind. Jedwede darstellerische Information ist somit außen vor. Bevor dies nicht gegeben ist, ist auch Deine Frage irrelevant.

                      Übrigens schließe ich mich dem allgemeinen Ruf an: Was willst Du eigentlich mit der Klasse test()?

                      Cheatah

                      --
                      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                      X-Will-Answer-Email: No
                      X-Please-Search-Archive-First: Absolutely Yes
  2. habe d'ehre

    also z.B. sowas class='test()'

    mich würde mal Dein Ansinnen für test() interessieren.

    Wilhelm

  3. Hi,

    wollte nur mal schnell fragen ob die Validatoren Klammern in CSS Namen aktzeptieren?
    also z.B. sowas class='test()'

    Zur HTML-Seite des Themas ist ja mittlerweile alles gesagt.

    Für CSS-Syntax gilt (nur relevantes zitiert, in abgeänderter Reihenfolge):

    class
      : '.' IDENT
      ;

    ident  -?{nmstart}{nmchar}*
    nmstart  [_a-z]|{nonascii}|{escape}
    nmchar  [_a-z0-9-]|{nonascii}|{escape}

    Da () weder in [_a-z] noch in [_a-z0-9-] enthalten sind und auch keine ASCII-Zeichen sind, kann im CSS für den Class-Selector also nicht

    .test()

    stehen, die Klammern müssen entsprechend escaped werden.

    Näheres dazu: http://www.w3.org/TR/CSS21/grammar.html

    Auch von mir die Frage: warum willst Du derartige Klassennamen benutzen?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas.

      Da () weder in [_a-z] noch in [_a-z0-9-] enthalten sind und auch keine ASCII-Zeichen sind, kann im CSS für den Class-Selector also nicht

      .test()

      stehen

      Aber sicher doch sind "(" und ")" ASCII-Zeichen.

      Schöne Grüße
      stefan

      1. Hi,

        Aber sicher doch sind "(" und ")" ASCII-Zeichen.

        ich kaufe ein non

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hallo.

          Aber sicher doch sind "(" und ")" ASCII-Zeichen.

          ich kaufe ein non

          Versteh ich jetzt nicht, das non für Dich oder für mich?

          Hex28 und Hex29
                         |
                         v

          ␣!"#$%&'()*+,-./0123456789:;<=>?
              @ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_
              `abcdefghijklmnopqrstuvwxyz{|}~

          Quelle: wikipedia

          Wie auch immer ...

          Schönen Gruß
          stefan