Can I use a div inside a list item?
HtmlValidationXhtmlHtml ListsHtml Problem Overview
Why is the following code valid when I am using a <div>
inside a <li>
?
<ul>
<li class="aschild">
<div class="nav">Test</div>
</li>
</ul>
Html Solutions
Solution 1 - Html
Yes you can use a div inside a li and it will validate.
<!ELEMENT li %Flow;>
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
<!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
Solution 2 - Html
Inside a <li>
you can have anything you could naturally put inside a <div>
. They are no different in this sense.
It should be valid in HTML4, XHTML and HTML5 as well.
This is NOT valid though (so the sources you found about "no divs in lists" could refer to this situation):
<ul>
<li></li>
<div></div>
<li></li>
</ul>
So: Lists (ul
, ol
) can only have li
s as their children. But li
s can have anything as their children.
Solution 3 - Html
Because <li>
is a block element, not an inline element like <span>
or <a>
.
Solution 4 - Html
An <li>
is a block element, and will work perfectly fine with other block elements inside.
Solution 5 - Html
Yes, you can. As much as you want.