What are the allowed tags inside a <li>?
HtmlHtml ListsHtml Problem Overview
I have been searching for the list of tags that are available inside a <li>
, but I couldn't find any reference.
Is it possible that any standards-compliant HTML 4+ block element is allowed in them?
Html Solutions
Solution 1 - Html
TL;DR: an <li>
can contain any element that is valid in <body>
.
In the HTML 4.01 spec for lists you’ll find the relevant extract of the DTD:
<!ELEMENT LI - O (%flow;)* -- list item -->
This specifies that an <li>
may contain flow content, which is the collection of all block and inline elements.
The HTML5 spec for an <li>
is the same in that it also allows any flow content.
Solution 2 - Html
It's a block level element so pretty much anything goes. Trouble only comes when you're putting block level elements inside inline ones.
Solution 3 - Html
Yup, pretty much. You can have lists inside lists (either inside the the inner list must be inside an <li>
or just loose inside the <ol>
/<ul>
<li>
), block elements and inline elements.
To me it wouldn't make much sense to put a <table>
inside an <li>
, but even that's still valid.
Solution 4 - Html
You can use the W3C's Markup Validation Service to test against your cases to know whether or not your markup is valid.
> This validator checks the markup > validity of Web documents in HTML, > XHTML, SMIL, MathML, etc.