Я обычно делаю разметку в виде списка (тип зависит от потребностей) или серии div.В основном каждое поле имеет содержащий элемент.В качестве простого примера я буду использовать здесь div, но обычно для меня это последний содержащий элемент:
<div class="input-text form-field">
<label for="the_element">Text Input</label>
<input id="the_element" type="text" />
</div>
Это действительно лучше, потому что, хотя разметка, по крайней мере, немного более семантическая, она даету нас масса возможностей.
С накоплением меток:
.form-field label { display: block; }
Фиксированные метки ширины:
.form-field {overflow: hidden; width: 200px;}
.form-field label {width: 40%; margin-left: 10%;}
.form-field label, .form-field input, .form-field select, .form-field textarea {float: left; width: 50%;}
Эта разметка также позволяет легко получить 2 поля вверх
Разметка:
<fieldset>
<legend>Name</legend>
<div class="input-text form-field">
<label for="first_name">First Name</label>
<input id="first_name" type="text" />
</div>
<div class="input-text form-field">
<label for="last_name">Last Name</label>
<input id="last_name" type="text" />
</div>
</fieldset>
CSS
fieldset {overflow: hidden;}
.form-field {overflow: hidden; width: 200px; float:left; margin-left: 20px;}
.form-field label { display: block; }
.form-field input, .form-field select .form-field textarea {display: block; width: 100%;}
Вы получите общее представление.Если вы делаете это таким образом и при необходимости используете реальную ширину, вы можете сделать форму полностью отзывчивой.