26
votes

I have a div element and within that div, we have text between p elements.

I want to add a heading. Should it go inside or outside the p?

Which is better:

<p>This is text
    <h3>This is my h3</h3>
    More text
</p>
<p>another text<p>

or

<p>This is text<p>
<h3>This is my h3</h3>
<p>another text<p>
2

2 Answers

45
votes

It is impossible to put a heading element inside a p element in HTML markup, not just formally but because browsers implicitly terminate an open p element when they encounter a heading. So the question is meaningless: an element that cannot exist in a certain context cannot have any meaning (semantics) within that context.

Instead of using p to group text and headings together, you can use the div element or, with the usual caveats, HTML5 novelties like section and article.

5
votes

According to standards a Paragraph should not contain other block elements (including paragraphs and headers). As indicated in other answers, to group a header with a paragraph you can use the div tag.

You can find a lot of information about this subject also on w3c's website: http://www.w3.org/TR/html401/struct/global.html#block-inline