What are the allowed tags inside a <li>?

HtmlHtml Lists

Html 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 <li> or just loose inside the <ol>/<ul> the inner list must be inside an <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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpetsagourisView Question on Stackoverflow
Solution 1 - HtmlRoToRaView Answer on Stackoverflow
Solution 2 - HtmlScott BrownView Answer on Stackoverflow
Solution 3 - HtmlNathan MacInnesView Answer on Stackoverflow
Solution 4 - HtmlSarfrazView Answer on Stackoverflow