Подтвердить что ты не робот

Какие html-разметки использовать для отображения данных метки/значения?

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

Вот фрагмент информации и макета, который я хотел бы отобразить:

Имя... MyName

Возраст................... туАде

электронной почты................ MyEmail

Я знаю, что имеется множество примеров, но проблема в том, что, похоже, нет общепринятого решения.

До сих пор я видел следующее использование:

  • Таблица с разметкой (и <tr> , <td> ...)
  • Неупорядоченный список с <ul> markup (и <li> <div> ...)
  • Регулярные разметки с < h1 > , < h2 > ... <p>
  • Список определений с <DL> , <DT> и <DD>
  • <label> ...?

Что является наиболее семантически правильным? Что проще всего отображать (в макете с двумя столбцами)? Что вы посоветуете мне использовать и по каким причинам?

(фрагменты кода html/css более чем приветствуются)

4b9b3361

Ответ 1

Ого. Мы действительно напугали всех: "Табличные макеты - это зло! Используйте CSS!" не так ли?

Таблица - с <th> для ярлыков и <td> для значений - отлично применима к этому типу контента, дает вам рендеринг, который вы хотите, и, по крайней мере, как семантически корректный, как список определений, возможно тем более. Либо они предпочтительнее для семантически свободных div.

Ответ 2

Я думаю, что наиболее семантически корректным будет <dl>, <dt> и <dd>, так как то, что вы показываете, эффективно определяет имя, возраст и электронную почту.

<dl>
  <dt>First Name</dt>
  <dd>Dominic</dd>
  <dt>Age</dt>
  <dd>24</dd>
  <dt>E-mail</dt>
  <dd>[email protected]</dd>
</dl>

Однако, очевидно, самый простой способ отобразить его в таблице - это <table>, <th> и <td>. Вы можете взломать таблицу-макет, используя списки определений, используя что-то вроде этого:

dt { float: left; clear: left; width: 6em; font-weight: bold; }
dd { float: left; }

Дополнительная информация о теге <dl> доступна здесь.

Ответ 3

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

Списки определения:

<dl>
  <dt>Label</dt>
  <dd>Value</dd>

  <dt>Label 2</dt>
  <dd>Value 2</dd>
</dl>

С CSS:

dl dt {
  float: left;
  width: 200px;
  text-align: right;
}

dt dd {
  margin-left: 215px;
}

Ответ 4

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

есть аргументы для многих из них, но я лично, я бы сохранил это просто.

<div class="profile">
    <p>
        <span class="label">First Name</span>
        <span class="value">MyName</span>
    </p>
    <p>
        <span class="label">Age </span>
        <span class="value">MyAge</span>
    </p>
    <p>
        <span class="label">Email</span>
        <span class="value">MyEmail</span>
    </p>
</div>

или

<ul class="profile">
    <li>
        <span class="label">First Name</span>
        <span class="value">MyName</span>
    </li>
    <li>
        <span class="label">Age </span>
        <span class="value">MyAge</span>
    </li>
    <li>
        <span class="label">Email</span>
        <span class="value">MyEmail</span>
    </li>
</ul>

CSS будет выглядеть примерно так:

.profile p {
    overflow: hidden;
}

.profile .label {
    vertical-align: top;
    float: left;
    width: 40%;
}

.profile .value{
    vertical-align: top;
    float: left;
    width: 60%;
}

причина не ссылаться на какое-либо конкретное имя html Node в CSS заключается в том, что если в будущем будет признанный способ сделать это, вам нужно будет только изменить имена Node в вашем HTML.