Вы должны будете решить использовать метки фиксированной ширины (если вы идете по чистому маршруту CSS). Ниже приведен минимум, чтобы получить то, что вы пытаетесь достичь (взято из HTML Dog .)
CSS:
label {
clear: left;
float: left;
width: 7em; /* or whatever length suits */
text-align: right;
}
HTML:
<form>
<div><label>Item 1</label><input /></div>
<div><label>Item 2</label><input /></div>
<div><label>Item 3</label><textarea></textarea></div>
</form>
Если вы абсолютно не хотите фиксированной ширины, то вы можете использовать этот JavaScript (сjQuery) и удалите фиксированную ширину из вышеуказанного CSS.Стоит отметить, что если вы включите людей с отключенным javascript, это будет выглядеть ужасно !
var largestWidth = 0;
$('label').each(
function() {
if ($(this).width() > largestWidth) {
largestWidth = $(this).width();
}
});
$('label').each(
function() {
$(this).width(largestWidth);
});
Я приведу живой пример на JSFiddle .
Учитывая приведенный вами вариант использования, я на самом деле думаю, что таблицы - лучший способ, но тогда у меня будет иное мнение по поводу дискуссии о таблицах / форматах, чем у большинства .