Итак, я видел много уроков и до сих пор не нашел единого ответа на этот вопрос: как правильно / лучше всего разметить форму, где у меня есть логическая группа элементов, состоящая из метки, элемента управления (введите или выберите) и предыдущее значение, т. е. одно поле?
Я бы хотел, чтобы макет CSS размещал каждую группу на новой горизонтальной линии.
Я видел <div>
оболочки, <br>
теги, <ul>
, <fieldset>
, <tr>
и вообще ничего (т. Е. Без тега разметки, только CSS), используемого для этой цели.
Таблицы, помимо плохой репутации для выполнения макета формы, не очень гибки, когда формат строки должен меняться. И br
кажется ужасной идеей (хотя я видел ее в уроках). Я уже использую fieldset
для создания логических групп полей в форме, но я всегда могу использовать два разных класса, если это более семантически правильно, чем div
. Подход ul
кажется странным ... внешний fieldset
группирует несколько полей, зачем мне ul
, который также группирует их?
Мне очень нравится простота разметки в этом дизайне: http://woork.blogspot.com/2008/06/clean-and-pure-css-form-design.html. Но у меня возникают трудности с адаптацией CSS для обработки более сложных полей, например. выбор и ввод, которые логически связаны друг с другом.
Так что в этом примере, что (если вообще нужно) обернуть вокруг поля № 1 и поля № 2 ниже?
<form .....>
<fieldset> <legend>Group 1</legend>
<!-- 'field #1' -->
<label for="newName">Name</label>
<input type="text" id="newName">
<!-- oldVal Filled in with Javascript or server-side script -->
<span class="oldVal" id="oldName">Old Name</span>
<!-- 'field #2' -->
<label for="newFood">Favorite Food</label>
<select id="newFood">
<option value="pizza">Pizza</option>
<option value="tacos">Tacos</option>
<option value="other">Other</option>
</select>
<input type="text" id="newFoodOther"> <!-- type here when 'other' is selected -->
<span class="oldVal" id="oldFood">Pizza</span>
</fieldset>
<fieldset> <legend> Group 2</legend>
<!-- more fields here -->
</fieldset>
</form>
Что проще всего использовать для управления макетом формы, и что является наиболее семантически правильным? И достаточно ли мне повезло, чтобы они были одним и тем же?