Принятый ответ (установка явной ширины в пикселях) затрудняет внесение изменений и прерывается, когда ваши пользователи используют другой размер шрифта. Использование таблиц CSS, с другой стороны, прекрасно работает:
form { display: table; }
p { display: table-row; }
label { display: table-cell; }
input { display: table-cell; }
<form>
<p>
<label for="a">Short label:</label>
<input id="a" type="text">
</p>
<p>
<label for="b">Very very very long label:</label>
<input id="b" type="text">
</p>
</form>
Вот JSFiddle: http://jsfiddle.net/DaS39/1/
А если вам нужно, чтобы метки были выровнены по правому краю, просто добавьте text-align: right
к меткам: http://jsfiddle.net/DaS39/
РЕДАКТИРОВАТЬ: еще одно быстрое примечание: таблицы CSS также позволяют вам играть со столбцами: например, если вы хотите, чтобы поля ввода занимали как можно больше места, вы можете добавить следующее в вашу форму
<div style="display: table-column;"></div>
<div style="display: table-column; width:100%;"></div>
Вы можете добавить white-space: nowrap
к labels
в этом случае.