Я должен сказать, самый распространенный способ сделать это - использовать таблицы . К сожалению, существуют проблемы с макетами форм на основе таблиц (большой сюрприз). Одна большая вещь состоит в том, что таблицы будут кровоточить по своим контейнерам (если переполнение не скрыто), и они не сократят свое содержимое, как это может сделать CSS. Кроме того, рендеринг таблиц обходится дороже (занимает больше тактов процессора). В целом, я думаю, что по сравнению с чистыми CSS-решениями макеты форм на основе таблиц жесткие и негибкие, и, как дизайнер, я начинаю (и вам следует!) С самого начала использовать таблицы для целей компоновки.
Метод, который мне начинает нравиться (и который становится все более популярным), - это чистый метод CSS2 для разметки форм. Я не буду приписывать себе идею, но она действительно прямолинейна. Все, что вам нужно сделать, это:
HTML:
<form action="process.php" method="post">
<label for="username">Username:</label>
<input type="text" name="username" id="username" />
<br />
<label for="password">Password:</label>
<input type="password" name="password" id="password" />
</form>
CSS:
label, input {
width:200px;
display:block;
float:left;
margin-bottom:10px;
}
label {
width:125px;
text-align:right;
padding-right:10px;
margin-top:2px;
}
br {
clear:left;
}
Как видите, код CSS действительно минимален, а результаты действительно потрясающие. Преимущества этого метода в том, что он использует меньше кода (быстрее загружается), он чище без грязных тегов таблиц, засоряющих ваш HTML-документ (удобство сопровождения), и я считаю, что веб-браузеры будут рендерить метод CSS быстрее.
Обновление 1: Я также нашел метод CSS с использованием неупорядоченных списков .
Обновление 2: @musicinmyhead напомнил мне об использовании тегов fieldset
и legend
в макетах форм CSS. Я закодировал нам быстрое и грязное демо здесь .
Примечание. Изначально я узнал об этом чистом макете формы CSS из: http://www.cssdrive.com/index.php/examples/exampleitem/tableless_forms/