Это меня уже давно беспокоит, и мне интересно, есть ли консенсус относительно того, как это сделать правильно. Когда я использую список HTML, как мне семантически включить заголовок для списка?
Один из вариантов такой:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но семантически <h3>
заголовок явно не связан с<ul>
Другой вариант такой:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но это кажется немного грязным, поскольку заголовок на самом деле не является одним из элементов списка.
Этот вариант не разрешен W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
в <ul>
«ы могут содержать только один или несколько <li>
» S
Старый "заголовок списка" <lh>
имеет наибольший смысл
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но, конечно, это официально не часть HTML
Я слышал, что предлагалось использовать <label>
как форму:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
но это немного странно и все равно не будет подтверждено.
Легко увидеть семантические проблемы при попытке стилизовать заголовки моего списка, когда мне приходится помещать свои <h3>
теги в первые <li>
и настраивать их для стилизации примерно таким:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
ужасы! Но, по крайней мере, так я могу управлять всем <ul>
, заголовком и всем остальным, стилизовав ul
тег.
Как правильно это сделать? Любые идеи?
источник
Ответы:
Как уже сказал Фелипе Альсакреатенс, первый вариант подойдет.
Если вы хотите убедиться, что ничто под списком не интерпретируется как принадлежащее заголовку, это именно то, для чего предназначены элементы содержимого секционирования HTML5. Так, например, вы могли бы сделать
источник
<h1>
внутри, так<section>
как это заголовок верхнего уровня в этих тегах.<h1>
там, конечно. Но<h3>
тоже нормально. Если вы не используете заголовок более высокого уровня в одном разделе.В этом случае я бы использовал список определений так:
источник
Ваш первый вариант - хороший. Это наименее проблемный вариант, и вы уже нашли верные причины, по которым вы не могли использовать другие варианты.
Кстати, ваш заголовок ЯВНО связан с
<ul>
: он прямо перед списком! ;)Редактирование: Стив Фолкнер, один из редакторов W3C HTML5 и 5,1 уже набросал определение в качестве
lt
элемента . Это неофициальный проект, который он обсудит для HTML 5.2, не более того.источник
<p>
. Но я все же хотел бы что-то более явное, что-то вродеfor
атрибута для<label>' or the
<th> `для таблиц. Я думаю, что этот<lh>
вариант имел бы наибольший смысл, если бы он действительно поддерживался W3C.<div> - это логическое разделение вашего контента, семантически это был бы мой первый выбор, если бы я хотел сгруппировать заголовок со списком:
то вы можете использовать следующий CSS, чтобы стилизовать все вместе как одно целое
источник
Вы также можете использовать этот
<figure>
элемент, чтобы связать заголовок со своим списком следующим образом:Источник: https://www.w3.org/TR/2017/WD-html53-20171214/single-page.html#the-li-element (Пример 162)
источник
Попробуйте определить новый класс ulheader в css. p.ulheader ~ ul выбирает все, что следует сразу за My Header
источник
Согласно w3.org (обратите внимание, что эта ссылка находится в черновой спецификации HTML 3.0 с истекшим сроком действия ):
источник
HTML 3.0
Ого, это действительно старый документ.Я поместил заголовок внутри ул. Нет правила, согласно которому UL должен содержать только элементы LI.
источник