HTML: лучший тег для «ярлыков» вне форм - PullRequest
44 голосов
/ 22 мая 2011

Какие HTML-теги вы бы использовали для такой информации:

<ч /> Имя : Джон
Возраст : 40
Город : Франкфурт
Страна : Германия
Статус : Актив

<ч />

Мне нравится использовать тег <label> в тегах p, что звучит как хорошая семантика. Однако эта информация НЕ находится внутри формы. И W3C говорит:

label: The label element represents a caption for a form control.

Так что же мне тогда использовать? Я могу четко использовать <strong>, но это не имеет «сильного значения» и не кажется правильным.

UPDATE

Заметив предложение DEFINITION LIST, я хотел бы спросить, будет ли это все же лучше, если у меня есть несколько фрагментов этой информации на одной странице? Это означало бы, что я определяю «имя» с другим «определением» несколько раз. Например:

<ч /> Имя : Джон
Возраст : 40
Город : Франкфурт
Страна : Германия
Статус : Актив

<ч />

Имя : Мария
Возраст : 30
Город : Бонн
Страна : Германия
Статус : Неактивен

<ч />

<dl> все еще лучший путь?

Ответы [ 5 ]

35 голосов
/ 22 мая 2011

A список определений может быть подходящим здесь:

<dl>
    <dt>Name</dt>
    <dd>John</dd>
    <dt>Age</dt>
    <dd>40</dd>
    <dt>City</dt>
    <dd>Frankfurt</dd>
    <dt>Country</dt>
    <dd>Germany</dd>
    <dt>Status</dt>
    <dd>Active</dd>
</dl>

http://www.w3.org/TR/html401/struct/lists.html#h-10.3 - Списки определений, созданные с использованием элемента DL, обычно состоят из серии пар терминов / определений (хотя списки определений могут иметь другие приложения).

Тем не менее, только потому, что вы хотите жирное форматирование, не означает, что вы ограничены <strong> или <b>. Вы можете использовать несемантическую <span> и просто применить форматирование с помощью CSS.

Кроме того, вы можете использовать CSS для добавления двоеточий, а не помещать их в разметку:

dt:after { content:":"; }

Возможно, чтобы прояснить некоторую путаницу относительно его правильного использования, похоже, что HTML5 будет ссылаться на этот тег как список описания .

http://www.w3.org/TR/html5/grouping-content.html#the-dl-element - Элемент dl представляет список ассоциаций, состоящий из нуля или более групп имя-значение (список описания).

3 голосов
/ 22 мая 2011

Это правильное место для структуры DL:

<dl>
   <dt>Name</dt>
   <dd>John</dd>

   <dt>Age</dt>
   <dd>40</dd>

   <dt>City</dt>
   <dd>Frankfurt</dd>

   <dt>Country</dt>
   <dd>Germany</dd>

   <dt>Status</dt>
   <dd>Active</dd>
</dl>

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

1 голос
/ 21 июня 2014

Я согласен с другими ответами, что список <dl> является наиболее семантическим вариантом здесь.В прошлом я никогда не был уверен, было ли это правильным использованием <dl>, потому что все официальные описания элемента <dl>, которые я видел, описывали его как «список определений», который будет использоваться для фактического определения терминов, как в глоссарии (см. мои комментарии к ответу @ Кристиана).Однако, взглянув на последний проект редактора спецификации HTML 5, я заметил, что он был переименован в «список описания», а не в «список определений», и приведенный пример на самом деле очень похож например в этом вопросе.

<dfn>, с другой стороны, кажется, предназначен только для фактического определения терминов.Вот некоторые соответствующие цитаты из приведенной выше ссылки:

Сам элемент dt, когда используется в элементе dl, не указывает, что его содержимое является определяемым термином, но это можно указать с помощьюэлемент dfn.

...

Элемент dfn представляет собой определяющий экземпляр термина.Абзац, группа списка описаний или раздел, являющийся ближайшим предком элемента dfn, также должны содержать определения для термина, заданного элементом dfn.

Итак, в заключение я бы остановилсярекомендация по использованию элемента <dl>, даже если его стиль по умолчанию отличается от примера OP.

Вот класс CSS многократного использования для <dl> в стиле примера:

.dl-inline dt, .dl-inline dd {display:inline; margin:0;}
.dl-inline dt:after {content:': '}
.dl-inline dd + dt:before {content:''; display:block;}
<dl class="dl-inline">
	<dt>Name</dt>
	<dd>John</dd>
	<dt>Age</dt>
	<dd>40</dd>
	<!-- ... -->
</dl>

Или версия SASS:

.dl-inline {
    dt,dd {display:inline; margin:0;}
    dt:after {content:': '}
    dd + dt:before {content:''; display:block;}
}
1 голос
/ 22 мая 2011

Возможно, вы можете использовать список определений (dl, dt, dd), но это тоже не звучит правильно.

Поскольку W3C говорит, что он представляет заголовок для формыcontrol, текст рядом с меткой не является control, и поэтому атрибут for становится бессмысленным.

Я бы просто пошел с strong, также потому что это лучшее представление без CSS.


Редактировать :

Поскольку речь идет о людях, вы также можете использовать эквивалент vCard для HTML: hCard .Пример:

<div class="vcard">
    <div class="fn">
        <strong class="type">Name</strong>:
        <span class="value">John</span>
    </div>
    <div class="note">
        <strong class="type">Age</strong>:
        <span class="value">40</span>
    </div>
    <div class="adr">
        <div class="locality">
            <strong class="type">City</strong>:
            <span class="value">Frankfurt</span>
        </div>
        <div class="country-name">
            <strong class="type">Country</strong>:
            <span class="value">Germany</span>
        </div>
    </div>
    <div class="note">
        <strong class="type">Status</strong>:
        <span class="value">Active</span>
    </div>
</div>

Затем вы можете использовать столько из них в <ul> или <ol>.Некоторые браузеры распознают эти свойства и превращают их в ссылки для использования с приложением.Например, свойства adr могут ссылаться на инструмент отображения.

Это просто стандарт, он не должен быть семантически правильным.Насколько я знаю, вы можете использовать любую разметку (теги HTML), которая вам нравится, в этих hCards.Смотрите ссылку для деталей.

0 голосов
/ 07 апреля 2014

Я бы посоветовал использовать тег <dfn>.

Он короткий, семантический и может быть легко стилизован.

Элемент отмечает определяемый термин;определение термина должно быть дано окружающей , или группой списков определений (обычно это пара , ).

Источник: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...