Просмотр сведений и соответствие CSS

Мне все еще трудно не использовать таблицы для макета представления сведений в HTML. Я хочу протестировать людей и узнать мнения.

Что бы вы предпочли видеть в HTML для просмотра подробностей? У какого из них меньше всего препятствий для кроссбраузерности? Какая из них наиболее совместима? Какой из них выглядит лучше, если у меня есть столбец с меткой статической ширины, выровненный по правому краю?

Под подробным представлением я подразумеваю что-то похожее на следующее изображение. Просмотр сведений и соответствие CSS

Таблица

<table>
<tr>
<td><label /></td>
<td><input type = "textbox" /></td>
</tr>
<tr>
<td><label /></td>
<td><input type = "textbox" /></td>
</tr>
</table>

Fieldset

<fieldset>
<label /><input type = "textbox" /><br />
<label /><input type = "textbox" /><br />
</fieldset>

Divs

<div class = "clearFix">
<div class = "label"><label /></div>
<div class = "control"><input type = "textbox" /></div>
</div>


<div class = "clearFix">
<div class = "label"><label /></div>
<div class = "control"><input type = "textbox" /></div>
</div>

Список

<ul>
<li><label /><input type = "textbox" /></li>
<li><label /><input type = "textbox" /></li>
</ul>

Что вы подразумеваете под "подробным просмотром"? Как это должно выглядеть?

Nathan Long 23.12.2008 22:31

У меня есть простое приложение CRUD, которому просто нужно иметь кучу текстовых полей с метками для заполнения данных.

bendewey 23.12.2008 22:37
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
4
2
2 708
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

На самом деле я беру это обратно для простых вводов только для текстовых полей. Я считаю, что опция Fieldset работает хорошо.

Однако обычно у меня будет несколько элементов управления в одной «строке», поэтому я использую макет на основе div, таким образом я могу поместить входные данные, валидаторы и все остальное в один элемент.

Ответ принят как подходящий

Эти подходы не исключают друг друга, лично я бы немного их перепутал:

<fieldset>
  <label for = "name">XXX <input type = "text" id = "name"/></label>
  <label for = "email">XXX <input type = "text" id = "email"/></label>
</fieldset>

Хотя, чтобы получить выровненную по правому краю метку (чего я бы лично избегал, потому что ее труднее сканировать визуально), вам понадобится дополнительный элемент вокруг текста, которого нет вокруг ввода, поэтому я бы выбрал

<fieldset>
  <div class = "label_input"><label for = "name">XXX</label><input type = "text" id = "name"/></div>
  <div class = "label_input"><label for = "email">XXX</label><input type = "text" id = "email"/></div>
</fieldset>

CSS:

label{
  float:left;
  text-align:right;
  width:115px;
  margin-right:5px;
}
input{
  margin-bottom:5px;
}

HTML:

<label for = "username">UserName:</label><input type = "text" id = "username" /><br />
<label for = "username">UserName:</label><input type = "text" id = "username" /><br />

Очевидно, что затем вы можете добавить div или использовать форму вокруг него, чтобы получить цвет фона для всей формы и т. д.

Я предпочитаю набор полей, содержащий div. Метки div имеют вид float: left; width: 20em, а блоки содержимого просто имеют фиксированное левое поле, например, 21em или 22em. Но вы должны не забыть включить четкий div, чтобы это работало:

<fieldset>
   <div class = "labels"><label for = "name">Name</label></div>
   <div class = "data"><input ....</div>
   <div style = "clear:both"/>
// repeat for next fields
</fieldset>

Метка и элементы ввода могут стоять сами по себе. К этому следует добавить большое «нет» четкому div.

Steve Perks 24.12.2008 01:13

Да, до тех пор, пока вам не нужно будет разместить 7 элементов в одной строке, два слева и пять справа. Тогда вы захотите, чтобы у вас были div, чтобы все было хорошо.

jmucchiello 24.12.2008 02:17

Я считаю, что формы - это одна из самых сложных задач в css, потому что, если вам нужен жесткий контроль, часто бывает много CSS, чтобы добавить, что старый школьный HTML позаботится о вас. Однако, если вы готовы принять единообразное естественное обращение, самым чистым способом разделить содержание и представление будет:

form { margin: 0; padding: 0; }
fieldset { whatever treatment you want }
#details div { margin: 5px 0; width: 100%; overflow: hidden; /* ensures that your floats are cleared */ }
#details label { float: left; width: 190px; text-align: right; }
#details input { margin-left: 200px; }

<form>
  <fieldset id = "details">
    <div id = "item1div">
      <label for = "item1">item1 label</label>
      <input type = "" id = "item1" />
    </div>
    <div id = "item1div">
      <label for = "item1">item1 label</label>
      <input type = "" id = "item1" />
    </div>
  </fieldset>
</form>

Вы МОЖЕТЕ использовать таблицы для форматирования форм таблично, но использовать CSS для добавления стилей в формы. Пуристы CSS, вероятно, скажут, что вам не следует этого делать, но на самом деле многие браузеры часто отображают CSS-формы по-разному и могут вызвать проблемы с доступностью. Табличная форма гораздо более согласована в браузерах и гораздо более доступна.

Форма - это не табличные данные. С семантической разметкой CSS не вызовет проблем с доступностью (даже если есть странности отображения)

steveax 10.12.2011 04:41

Другие вопросы по теме