Должен ли я все равно использовать таблицы?
Код таблицы, который я заменяю:
<table>
<tr>
<td>Name</td><td>Value</td>
</tr>
...
</table>
Из того, что я читал, у меня должно получиться что-то вроде
<label class = "name">Name</label><label class = "value">Value</value><br />
...
Мы очень ценим идеи и ссылки на онлайн-образцы. Я разработчик, выходящий из глубины моей дизайнерской мысли.
Обновлено: Мне нужно иметь возможность отображать данные пользователю и редактировать значения в отдельной (но почти идентичной) форме.
Основной заголовок вводит в заблуждение, было бы хорошо, если бы кто-нибудь мог отредактировать, чтобы отразить тот факт, что IainMH говорил о макете полей формы.






Я думаю, что таблицы лучше всего использовать для табличных данных, которые, похоже, у вас есть.
Если вы не хотите использовать таблицы, лучше всего использовать списки определений (<dl> and <dt>). Вот как их стилизовать, чтобы они выглядели как ваш старый макет <td>.
http://maxdesign.com.au/articles/definition/
Я думаю, что списки определений семантически близки к парам имя / значение.
<dl>
<dt>Name</dt>
<dd>Value</dd>
</dl>
Списки определений - неправильно используются или неправильно понимаются?
Значение будет отступом и помещено в новую строку Имя Значение
Это зависит от таблицы стилей. Взгляните на ссылку в моем ответе и убедитесь сами.
Как сказал Эспо, списки определений можно стилизовать по своему усмотрению. Вы можете легко переопределить стиль новой строки / отступа по умолчанию.
Я думаю, что ваш ответ значительно выиграет от добавления CSS, чтобы он выглядел как таблица.
используйте свойство float:, например: css:
.left {
float:left;
padding-right:20px
}
html:
<div class = "left">
Name<br/>
AnotherName
</div>
<div>
Value<br />
AnotherValue
</div>
Этот подход имеет плохую доступность, так как имя / значения несовместимы. Также проблема, если происходит перенос слов, так как имена и значения не совпадают.
Совершенно разумно использовать таблицы для данных, которые кажутся табличными.
Но это вроде как не стол. Я полагаю, что в веб-формах ASP.NET это может быть разница между GridView и DetailsView.
Если я пишу форму, я обычно использую это:
<form ... class = "editing">
<div class = "field">
<label>Label</label>
<span class = "edit"><input type = "text" value = "Value" ... /></span>
<span class = "view">Value</span>
</div>
...
</form>
Затем в моем css:
.editing .view, .viewing .edit { display: none }
.editing .edit, .editing .view { display: inline }
Затем с помощью небольшого количества JavaScript я могу переключить класс формы с редактирования на просмотр.
Я упоминаю об этом подходе, так как вы хотели отображать и редактировать данные с почти одинаковым макетом, и это способ сделать это.
Как и macbirdie, я был бы склонен отмечать такие данные как список определений, если только содержимое существующей таблицы не может быть оценено как табличное содержимое быть.
Я бы не стал использовать тег label так, как вы предлагаете. Взгляните на объяснение тега метки @ https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label - он действительно предназначен для того, чтобы вы могли сосредоточиться на связанном с ним элементе управления. Также избегайте использования общих div и span, поскольку с семантической точки зрения они слабые.
Если вы отображаете несколько пар имя-значение на одном экране, но редактируете только одну на экране редактирования, я бы использовал таблицу на первом экране и список определений на втором.
Списки горизонтальных определений работают довольно хорошо, т.е.
<dl class = "dl-horizontal">
<dt>ID</dt>
<dd>25</dd>
<dt>Username</dt>
<dd>Bob</dd>
</dl>
Класс dl-horizontal предоставляется фреймворком Bootstrap CSS.
Из Bootstrap4:
<dl class = "row">
<dt class = "col">ID</dt>
<dd class = "col">25</dd>
</dl>
<dl class = "row">
<dt class = "col">Username</dt>
<dd class = "col">Bob</dd>
</dl>
Это прекрасно работает, если у вас есть CSS-фреймворк начальной загрузки.
Просто обновление dl-horizontal сбрасывается в bootstrap 4; но есть альтернатива (getbootstrap.com/docs/4.0/migration/#typography)
Вы можете объяснить, что это за страница? Например. это форма или у вас есть данные, которые нужно отобразить в «таблице»? ;)