Hallo,
wenn ich mich nicht vertippt hät sähe es so aus und es würde funktionieren:
<td Hintergrund="schwarz">
td[Hintergrund="schwarz"]{background: #000000}
Ja, aber es ist deswegen trotzdem nicht korrekt.
Ein HTML-Dokument basiert auf einer DTD (DokumentTypeDefinition). Diese gibst Du im Prolog des Dokuments an:
Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Ein validierender HTML-Parser würde nun beim Umsetzen des HTML-Codes in darzustellende Elemente jeweils prüfen, ob es das Element, bei Dir TD, in der DTD gibt, aber auch, ob es das Attribut, bei Dir hintergrund, für dieses Element in dieser DTD gibt. Wenn nicht, müsste er eigentlich mit einer Fehlermeldung abbrechen. In der DTD <http://www.w3.org/TR/html4/strict.dtd> gibt es für TD nur die Attribute
<!ATTLIST (TH|TD) -- header or data cell --
%attrs; -- %coreattrs, %i18n, %events --
abbr %Text; #IMPLIED -- abbreviation for header cell --
axis CDATA #IMPLIED -- comma-separated list of related headers--
headers IDREFS #IMPLIED -- list of id's for header cells --
scope %Scope; #IMPLIED -- scope covered by header cells --
rowspan NUMBER 1 -- number of rows spanned by cell --
colspan NUMBER 1 -- number of cols spanned by cell --
%cellhalign; -- horizontal alignment in cells --
%cellvalign; -- vertical alignment in cells --
>
Es "funktioniert" also nur, weil Du das zweifelhafte ;-) "Glück" hast, dass die Browser bisher keine validierenden HTML-Parser nutzen, sondern falsche Elemente bzw. Attribute einfach ignorieren bzw., dass das CSS eben auch falsche Attribute selectiert. Zukunftssicher ist das aber nicht, da spätestens XHTML auch als XML und damit validierend geparst werden können sollte.
viele Grüße
Axel