bei der Erstellung eines validen xhtml 1.0 Formulars, bei dem die Labels und die Inptfelder nebeneinander liegen und die exakt selben Werte bei Abstand, Höhe, Schriftgröße, Positionierung der Schrift im Feld, etc. haben sollen, stößt man mit CSS an die Grenzen.
Was meinst du genau? Zeige mal ein Beispiel.
Egal, wie man sich mit paddings, margins, line-hights oder floats auch spielt, es kommt immer entweder zu Abweichungen zwischen Label und Inputfeld pro Browser oder zwischen den Browsern.
Meinst du die vertikale Positionierung?
Die einfachste Lösung wäre die Verwendung einer unsichtbaren Tabelle, in deren Felder ich die Labels und die Inputfelder lege.
Welchen Vorteil hast du mit der Tabelle? Dass du bei fester Zellenhöhe den Inhalt vertikal mittig positionieren kannst?
Davon abgesehen verhält sich eine Tabellenzelle genauso wie andere Elemente, was die Positionierung seiner Inhalte angeht. Man muss bei Eingabefeldern beispielsweise genauso beachten, dass sie standardmäßig auf der Grundlinie liegen, und bspw. mit vertical-align: middle oder display: block arbeiten.
Meine Frage an Euch: Ist das legitim und kann ich das ruhigen Gewissens so machen - oder ist diese Lösung genauso verpönt, als ob ich mit Hilfe einer Tabelle ein Spaltenlayout verwirkliche?
Eine Tabelle für ein Formular kann genauso problematisch sein wie für andere Layoutanwendungen. In der Regel reichen einfachere Strukturen aus, die sich mit CSS flexibler formatieren lassen. Braucht man es komplexer, so kommt man ohnehin an eine Elementhierarchie, die der einer Tabelle gleicht (tr-th(label)-td(input)). Mit sovielen gruppierenden Elementen hat man eine große Freiheit hinsichtlich der möglichen Formatierungen, einschließlich Tabellen-ähnlichem Verhalten. Mit einer Tabelle im Markup legt man sich stärker fest, dafür lassen sich Spalten und Ausrichtung flexibler und robuster lösen – wenn man dieses Layout denn braucht.
Wenn ich einen Formularbaukasten zusammenstelle, dann meist ohne Tabellen. Was nicht ausschließt, dass manche Formulare Tabellen zumindest teilweise verwenden können. Positionierungsprobleme lassen sich i.d.R. mit CSS lösen.
Mathias