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

Правильно ли блок <div> внутри <label>?

Я использую Bootstrap, это демо горизонтальной формы:

<form class="form-horizontal" role="form">
  <div class="form-group">
    <label for="inputEmail1" class="col-lg-2 control-label">Email</label>
    <div class="col-lg-10">
      <input type="email" class="form-control" id="inputEmail1">
    </div>
  </div>
</form>

но я не хочу создавать идентификатор для каждого <input>, поэтому

<form class="form-horizontal" role="form">
  <div class="form-group">
    <label class="block">
      <span class="col-lg-2 control-label">Email</span>
      <div class="col-lg-10">
        <input type="email" class="form-control">
      </div>
    </label>
  </div>
</form>

но display:block не может находиться внутри display:inline, поэтому я использую CSS

.block {
  display: block;
}

он работает, но правильно ли это? потому что я слышал, что мы не должны помещать элемент display:block в элемент display:inline (label)

4b9b3361

Ответ 1

Нет, HTML не позволяет <label> содержать <div>.


Смотрите спецификацию для элемента label:

Модель контента: Содержимое фразы, но без элементов, которые могут быть помечены как потомки, если только это не элемент, помеченный как элемент управления, и элементов без меток.

Где формулировка контента ссылается на:

Содержимое фразы - это текст документа, а также элементы, которые размечают этот текст на уровне внутри параграфа. Запускает формулировку абзацев содержания.

a abbr area (если это потомок элемента карты) audio b bdi bdo br button canvas cite code data datalist del dfn em embed i iframe img input ins kbd keygen label map mark math meter noscript object output progress q ruby s samp script select small span strong sub sup svg textarea time u var video wbr text