Finale Leerzeichen in CSS Klassennamen
Oger
- css
4 Der Martin0 suit0 suit
Hallo,
ich habe Folgendes gesehen: <div class = "name ">
Sind finale Leerzeichen in CSS Klassennamen zulässig/möglich, oder kann es sich dabei um einen Fehler handeln?
Hi,
ich habe Folgendes gesehen:
<div class = "name ">
Sind finale Leerzeichen in CSS Klassennamen zulässig/möglich, oder kann es sich dabei um einen Fehler handeln?
weder noch. Der Klassenname im Beispiel ist "name", nicht "name ". Das Leerzeichen wird nur verwendet, um mehrere Klassennamen voneinander zu trennen (wenn ein Element eben mehreren Klassen angehören soll). Ein Leerzeichen -also Trennzeichen- am Schluss ist nicht nötig, aber auch nicht schädlich.
Ciao,
Martin
PS: Es gibt keine CSS-Klassen. Klassen sind ein Konzept des zugrunde liegenden Markups. CSS setzt nur auf die HTML-Klassen auf, um Elemente danach selektieren zu können.
ich habe Folgendes gesehen:
<div class = "name ">
Sind finale Leerzeichen in CSS Klassennamen zulässig/möglich, oder kann es sich dabei um einen Fehler handeln?
Wie Martin schon sagt: du verwechselt hier den Attributwert des HTML-Attributs "class" mit dem Konzept der Klassen-Selektoren. Dieser ist ansich nur eine Kurzschreibweise für einen leerzeichenseparierten Attribut-Selektor:
.foo
entspricht
[class~="foo"]
und beides selektiert HTML-Elemente die irgendwo im Attribut-Wert Klass den durch Leerzeichen getrennten Wert "foo" enthält
<div class="foo">
<div class="foo ">
<div class="foo bar">
<div class="bar foo">
<div class="bar foo ">
Dieser ist ansich nur eine Kurzschreibweise für einen leerzeichenseparierten Attribut-Selektor [...]
Nachtrag: das .class einer durch Leerzeichen separierten Liste entspricht ist HTML-Spezifisch. Das class-Attribut in SVG z.B. ist eine durch White-Space-Zeichen getrennte Liste und daher nicht durch den Attribut-Selektor mit ~-Prefix ersetzbar.
@@suit:
nuqneH
Nachtrag: das .class einer durch Leerzeichen separierten Liste entspricht ist HTML-Spezifisch. Das class-Attribut in SVG z.B. ist eine durch White-Space-Zeichen getrennte Liste und daher nicht durch den Attribut-Selektor mit ~-Prefix ersetzbar.
Ähm, wie bitte?
Ein @class-Attributwert ist auch in HTML eine Whitespace-getrennte Liste. (Das ist auch in HTML5 so.)
Der Klassenselektor als spezieller Attributselektor ist auch nicht notwendigerweise HTML-spezifisch. Das ist auch in CSS 3 so.
Qapla'
Ähm, wie bitte?
Ich hatte gestern hier schon eine Antwort gepostet - die ist aber irgendwie flöten gegangen :)
Du hast recht, ja.
Ich hätte beim Schmied, und nicht beim Schmiedl fragen sollen - die CSS-2.1-Empfehlung widerspricht hier der HTML-4.91-Empfehlung.
http://www.w3.org/TR/CSS2/selector.html#pattern-matching
'E[foo~="warning"] Matches any E element whose "foo" attribute value is a list of space-separated values, one of which is exactly equal to "warning"'
'DIV.warning Language specific. (In HTML, the same as DIV[class~="warning"].)'
Aber wie du ja schreibst ist der Wert des class-Attributs in HTML 4.01 nicht leerzeichengetrennt - hier hat wohl jemand in der empfehlung das "white" vergessen.
http://www.w3.org/TR/css3-selectors/#class-html
Das Selectors Module aus CSS 3 hingegen spricht hier explizit von whitespace.
@@suit:
nuqneH
Aber wie du ja schreibst ist der Wert des class-Attributs in HTML 4.01 nicht leerzeichengetrennt - hier hat wohl jemand in der empfehlung das "white" vergessen.
?? In der HTML-4.01-Spec ist es doch da. In der HTML5-Spec fehlt es und es dauert zwei Clicks, um herauszufinden, dass mit „space characters“ Whitespaces gemeint sind.
Wäre aber auch ein Wunder, wenn sich die HTML5-Spec an gängige Terminologie halten würde.
Qapla'
?? In der HTML-4.01-Spec ist es doch da. In der HTML5-Spec fehlt es und es dauert zwei Clicks, um herauszufinden, dass mit „space characters“ Whitespaces gemeint sind.
Ja, in HTML - das hat aber mit CSS nichts zu tun, wie wir schon festgestellt haben :)