Я думаю, что в большинстве ответов не хватает того, что первоначальный спрашивающий хотел, чтобы ширина столбцов зависела от ширины содержимого. Я считаю, что единственный способ сделать это с помощью чистого CSS - это использовать display: table, display: table-row и display: table-cell, но это не поддерживается IE. Но я не уверен, что это свойство является желательным, я считаю, что создание широких столбцов из-за одного длинного имени поля делает макет менее эстетичным и более сложным в использовании. Свернутые строки, на мой взгляд, хороши, поэтому я думаю, что ответы, которые я только что предложил, были неправильными, - это, вероятно, верный путь.
Пример Роберта идеален, но если вам действительно нужно использовать таблицы, я думаю, вы можете сделать его немного более "семантическим", используя <th>
для имен полей. Я не уверен в этом, поэтому, пожалуйста, кто-нибудь поправит меня, если я ошибаюсь.
<table>
<tr><th scope="row"><label for="field1">FieldName 1</label></th>
<td><input id="field1" name="field1"></td></tr>
<tr><th scope="row"><label for="field2">FieldName 2 is longer</label></th>
<td><input id="field2" name="field2"></td></tr>
<!-- ....... -->
</table>
Обновление: я не следил за этим внимательно, но IE8, очевидно, поддерживает таблицы CSS, поэтому некоторые предлагают нам начать их использовать. Есть статья о 24 путях , которая содержит соответствующий пример в конце.