molily: Opera (7 + andere?) und Höhe von Inputfeldern

Beitrag lesen

Das erste was mir daraufhin einfällt: HARDCORE!
Peter-Paul Koch hat in einem seiner Artikel einmal richtig festgestellt, er selbst hat noch nie einen CSS-Hack eingesetzt

Ich kenne den Artikel. ppk lebt aber auf dem Mond. Der Unterschied von zwei Pixeln bei Texteingabefeldern ist tatsächlich vernachlässigbar, dazu ist ein Hack letztendlich mehr schädlich als nützlich. Was den Großteil der übrigen Szenarien angeht, in denen Hacks nötig bzw. sehr sinnvoll sind, so geht es darum, grundlegende Benutzbarkeit zu wahren.

(ich nehme an, dass er seine Seiten nicht größtmöglich pixelgenau designt (zweite Klammer: mir ist schon bewusst, das pixelgblablabla)),

Der Großteil der Verwendung von Hacks hat mit Pixelgenauigkeit eigentlich nichts zu tun.

denn er fürchtet dass dann irgendwelche Versionen auftauchen, die den CSS-Hack plötzlich verstehen oder nur zwischendurch welche ihn verstehen (was gab' es bei Opera inzwischen: 7.XX: .21, .22, .23?) -> s. a. Deine Überprüfung unten.

Hast Du bei http://centricle.com/ref/css/filters/tests/star-7/ auch die Kommentare durchgelesen? Der Hack besteht auf einer Fehlinterpretation der W3C-Vorlagen, denn nach dem Element müsste normalerweise ein Leerzeichen stehen, dann versteht auch (mein) Opera 7 den Selektor.

Ich weiß. Allerdings ist die normative formale Grammatik von CSS 2 nicht so eindeutig, anhand dessen kann ich nicht feststellen, dass dies verboten ist. Außerdem stammt es aus den CSS2-Textcases von David Baron: http://dbaron.org/css/test/univsel.
In der Grammatik steht nämlich:
selector
  : simple_selector [ combinator simple_selector ]*
  ;
simple_selector
  : element_name? [ HASH | class | attrib | pseudo ]* S*
  ;
combinator
  : '+' S* | '>' S* | /* empty */
  ;
element_name
  : IDENT | '*'
  ;
usw.

Hier verstehe ich nicht, wieso Whitespace nicht als Combinator aufgeführt wird. Descendant Selectors arbeiten mit Whitespace als Kombinatoren: »A descendant selector is made up of two or more selectors separated by whitespace.« Wieso wäre also der Selektor »html*« falsch? Es wäre ein simple_selector mit element_name ohne Whitespace dahinter, dann wieder ein simple_selector. nmchar legt ferner fest, dass »*« nicht gleichzeitig Teil des IDENT sein kann, somit müssen es zwei element_name sein.