Jump to content
  • 0

li блочный или строчный?


cyklop77
 Share

Question

скажите пожалуйста допустимо ли использовать внутри <li> тэги <h3>, <div>? в справочнике этого сайта я так и не нашел информации о типе <li>.

есть мнение, что такое использование несемантично. хотелось бы понять почему

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

В HTML5 больше нет "блочного" и "строчного", теперь вместо них Flow content и Phrasing content соответственно (в первом приближении то же самое, но на базе логической роли в документе, а не дефолтного отображения в браузере). Эл-т <li> может содержать Flow content, т.е. фактически что угодно. Правда, в спецификации есть ремарка, что если понадобилось вложить в элемент списка заголовок — скорее всего список используется неправильно (т.к. любой заголовок неявно создает новую секцию, а список, по своей логике, должен бы сидеть в одной).

  • Like 1
Link to comment
Share on other sites

  • 0

скажите пожалуйста допустимо ли использовать внутри <li> тэги <h3>, <div>? в справочнике этого сайта я так и не нашел информации о типе <li>.

есть мнение, что такое использование несемантично. хотелось бы понять почему

Неужели в вашем случае вместо <li> и <ul> нельзя взять что-то другое?

Тег <ul> в HTML5 даже не рекомендуют вставлять внутрь тега <p>. Их надо ставить на один уровень, так:


<p>text</p>
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
<p>text</p>

Ссылку дать не могу, так как не помню, где это видел.

Link to comment
Share on other sites

  • 0

в <li> допустимо...недопустимо в <ul> использовать что-либо кроме <li>

<li> блочный

то есть если вкладываю div в li, то фактически вкладываю div в ul и получаю семантическую ошибку?

или вы имели в виду, что в ul нельзя вклвдывать div на одном уровне с li?

Edited by cyklop77
Link to comment
Share on other sites

  • 0

то есть если вкладываю div в li, то фактически вкладываю div в ul и получаю семантическую ошибку?

или вы имели в виду, что в ul нельзя вклвдывать div на одном уровне с li?

Нет, в ul не может быть дочерним элементом грубо говоря ничего кроме li (display:list-item) , а в <li >может быть уже любая конструкция из <div> и других элементов.

  • Like 1
Link to comment
Share on other sites

  • 0

А что вместо "инлайн-блочных" элементов?

Их в HTML никогда и не было. Они как были, так и остались в CSS.

или вы имели в виду, что в ul нельзя вклвдывать div на одном уровне с li?

Именно так. Непосредственным потомком ul может быть только li и ничто иное, а уже внутри li — формально почти что угодно, но нужно смотреть по здравому смыслу.

ничего кроме li (display:list-item)

Display у него может быть какой угодно, хоть inline, хоть table-cell, хоть вообще none. CSS применяется к уже построенному DOM-дереву, а ограничения на Content-model действуют на этапе ее построения. Браузер сначала определяет, какой элемент и где у него создается (напр. конструкция <div><div> создает два дива один в другом, а <li><li> — два пункта списка рядом, т.к. открывающий <li> после <li> неявно закрывает предыдущий), и только потом к этим элементам применяется CSS, позволяющий до неузнаваемости менять их внешнее представление.

  • Like 1
Link to comment
Share on other sites

  • 0

ничего кроме li (display:list-item)

Display у него может быть какой угодно, хоть inline, хоть table-cell, хоть вообще none. CSS применяется к уже построенному DOM-дереву, а ограничения на Content-model действуют на этапе ее построения. Браузер сначала определяет, какой элемент и где у него создается (напр. конструкция <div><div> создает два дива один в другом, а <li><li> — два пункта списка рядом, т.к. открывающий <li> после <li> неявно закрывает предыдущий), и только потом к этим элементам применяется CSS, позволяющий до неузнаваемости менять их внешнее представление.

Эх где ты был полгода назад, когда я мучался над пониманием данных основ ;)

Вот, что тем дисплеем подразумевал я:

Some block-level elements may generate additional boxes in addition to the principal box: 'list-item' elements. These additional boxes are placed with respect to the principal box.
Link to comment
Share on other sites

  • 0

Вот, что тем дисплеем подразумевал я:

Some block-level elements may generate additional boxes in addition to the principal box: 'list-item' elements. These additional boxes are placed with respect to the principal box.

Это опять же нюансы CSS-представления, одного поля с псевдоэлементами ::before/::after (те тоже создают добавочные CSS-боксы для одного элемента). Content-model про эти дополнительные боксы не знает и знать не может, она же не ясновидящая :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy