Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
The HTML table model allows authors to arrange data — text, preformatted text, images, links, forms, form fields, other tables, etc. — into rows and columns of cells.источникОфициально признаю: я был неправ.
5.3 Не используйте таблицы для создания макета (каркаса), если таблица, будучи приведённой к линейному виду, не имеет смысла. («линейный вид» — это содержимое ячеек таблицы в виде строки, порядок содержимого определяется порядком появления ячеек в вёрстке — прим. перев.)Соотнеся предыдущую цитату и эту, можно сделать вывод, что мы имеем право без зазрения совести сверстать форму используя таблицы, однако никто не запрещает сделать то же самое с помощью блоков и CSS.
5.4 Если таблица используется для создания макета (каркаса), то не используйте структурную разметку с целью визуального форматирования.
К примеру, содержимое элемент <th> (table header) обычно отображается отцентрованным и полужирным начертанием. Если же ячейка не является заголовком, то следует использовать CSS или атрибуты элемента (а не ставить элемент <th> вместо <td> — прим. перев.)

1. Не из-за [type=text]
«за месячишко» проапдейтить весь CSS
вообще никакой семантики нет, если что. Так что в данном случае правильнее всего .div вообще никакой семантики нет, если что. Так что в данном случае правильнее всего dl.body {font-size:14px;}
.field {clear:both; text-align:right; line-height:25px;}
<style>
.form_line label
{
display:inline-block;
display:-moz-inline-block;
width:120px;
}
</style>
<div class="form_line">
<label></label>
<input />
</div>
<div style="float:left;">
<label for="n1">Имя</label>
<label for="ln">Фамилия</label>
<label for="a1">Место жительства</label>
</div>
<div style="float:left;">
<input type="text" id="n1" />
<input type="text" id="ln" />
<input type="text" id="a1" />
</div>
<fieldset>
<label><span>Поле:</span><input/></label>
<label><span>Поле2:</span><input/></label>
</fieldset>
вы бы сделали заготовку которая с другими типами полей тоже дружит.. а то если заменить <input type="text" /> на <textarea name="a" /></textarea> - то все ломается
body {font-size:14px;}
label span {float:left; padding-right:10px; text-align:left;}
.field {clear:both; text-align:right; line-height:25px;}
.main {float:left;}
<div class="main">
<div class="field">
<label><span>Имя</span>
<input type="text" name="n" /></label>
</div>
<div class="field">
<label><span>Фамилия</span>
<input type="text" name="ln" /></label>
</div>
<div class="field">
<label><span>Место жительства</span>
<input type="text" name="a" /></label>
</div>
</div>
Выравнивание полей формы с помощью CSS