Moin!
In jüngerer Zeit macht mir allerdings Opera etwas Sorgen (Opera 9.23). Beispielsweise habe ich in einem Formular sowas:
<input type="hidden" name="mode" value="simple" />
<input type="hidden" name="beanId" value="2146" />
<input type="hidden" name="pageId" value="148" />
<input type="hidden" name="category" value="" />
Da sie "hidden" sind, sollte zu erwarten sein, daß sie eben nicht angezeigt werden - tun sie auch nicht. Nur: der Platz, den sie belegen, wird von Opera trotzdem freigehalten, von allen anderen nicht. Da ich für "input" eine Breitenangabe definieren muß, zeigt Opera also ein exakt in dieser Breite gehaltenes "Loch".
Input-Elemente vom Typ "hidden" sind dennoch ganz normale Input-Elemente, die man formatieren kann. Man könnte grundsätzlich auch deren Inhalt sichtbar machen (mit CSS :before bzw. :after und content() würde das z.B. gehen).
Dein Irrtum ist, dass diese Elemente unter allen Umständen unsichtbar wären.
Die korrekte und wegen des IE6 leider notwendige Vorgehensweise ist, allen Arten von Input-Elementen oder einem geeigneten Elternelement davon (z.B. einem umschließenden <label>) eine differenzierende Klasse zuzuweisen, und diese dann zu formatieren. Auf diese Weise lassen sich versteckte Input-Elemente unformatiert (d.h. mit dem Browser-Standardstylesheet formatiert) lassen.
Dein Problem ist übrigens nicht nur der Opera. Auch der Firefox hat die Eigenschaft, hidden-Inputs formatierbar zu haben.
Selbst <head> läßt sich sichtbar und formatierbar machen!
Die Frage ist: geht es gar nicht, oder geht es auf irgendeinem Weg, den ich bisher entweder nicht probiert, nicht gefunden, übershen oder vergessen habe?
Die Antwort ist: Formatiere nur die Elemente, die du wirklich formatieren willst. Ich halte es für absurd, jetzt wieder in den "Browserkrieg" einzusteigen und für alle möglichen Sonderfälle von Browsern eigene Stylesheets einzusetzen. Das widerspricht ja absolut der Idee, dass es mit CSS ja gerade möglich ist, browserübergreifend standardisierte Formatierungen anzuwenden (leider mit der Ausnahme der IEs, die zu CSS noch nicht ausreichend kompatibel sind, aber dummerweise eine zu hohe Marktverbreitung haben, um sie ignorieren zu können).
Meine Devise: Ein Stylesheet für alle, und eines für Reparaturen, damit der IE6 auch was hinkriegt, sofern nötig. Alles andere ist Blödsinn.
Insbesondere könntest du grundsätzlich (das muß ja nicht auf Opera beschränkt sein) den input-Feldern vom Typ hidden ein display:none verpassen, wenn es gar nicht anders realisierbar ist. Dabei aber die Kaskade und Spezifität der Selektoren beachten.
- Sven Rautenberg
"Love your nation - respect the others."