Действителен ли заголовок в легенде? <legend><h1> Подпись </h1></legend> - PullRequest
8 голосов
/ 04 ноября 2011

Я использую это в visual studio, но компилятор утверждал, что h1 не может быть вложен в элемент legend, но браузер может его отрендерить в любом случае, поэтому я запутался, что это допустимо или нет?

<fieldset>
   <legend>
     <h1>Caption</h1>
   </legend>
</fieldset>

Ответы [ 7 ]

10 голосов
/ 04 ноября 2011

Есть много вещей, которые браузеры делают, которые не требуются стандартами: -)

Эта страница здесь (HTML4) определяет ключевое слово legend и заявляет, что оно можетсодержит встроенных элементов , заголовки которых не являются частью.Есть и другие, возможно, полезные, такие как big или strong.

. Кроме того, соответствующая страница для H1 не перечисляет legend как один из разрешенных элементов.находиться внутри.Вы также можете использовать атрибуты легенды id, class или style для задания основных текстовых свойств.

4 голосов
/ 22 февраля 2017

В HTML 5.2 это выглядит так:

4.10.16. Элемент легенды Модель контента: Фразировка содержания и заголовков (элементы h1-h6).

https://w3c.github.io/html/sec-forms.html#the-legend-element

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

4 голосов
/ 04 ноября 2011

В HTML5 элементы, разрешенные внутри <legend>, - это элементы из Phrasing Content . Согласно документации:

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

3 голосов
/ 04 ноября 2011

Элемент легенды набора полей не предназначен для того, чтобы разрешать дочерние элементы, если они не считаются «содержимым фразы».Хотя большинство браузеров не будут жаловаться (таким образом делая его действительным на практике), вам, вероятно, было бы лучше использовать стиль для настройки внешнего вида вашего элемента легенды, поскольку для этого и нужен CSS, элементы должны использоваться для логической группировки / идентификации.содержание, не стилизующее его.

Легенда: http://www.w3.org/TR/html5/forms.html#the-legend-element

Фразирование контента: http://www.w3.org/TR/html5/content-models.html#phrasing-content

3 голосов
/ 04 ноября 2011

нет, это недействительно внутри легенды.вы можете использовать wc3 validator для проверки вашего кода

2 голосов
/ 04 ноября 2011

если вы проверяете html-стандарты, там написано:

<!ELEMENT LEGEND - - (%inline;)*       -- fieldset legend -->

Часть %inline означает, что она должна содержать только элементы уровня символов и текстовые строки. Поэтому, хотя он действительно рендерится, вы не должны использовать его таким образом, потому что HTML-код на самом деле недопустим.

1 голос
/ 25 февраля 2017

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

<fieldset role="group" aria-labelledby="heading">
    <h1 id="heading">Caption</h1>
    <p>Other stuff...</p>
</fieldset>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...