Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
In HTML 4 elements typically belonged to one of two content models block-level or inline. Now, block-level elements could contain either block-level or inline content whereas inline content usually occurred within the flow of a block-level element. Now, for example paragraphs, div tags, and headers were block-level elements and would occupy their own line within the document flow. Whereas, links, emphasis tags, and span tags were inline level elements and could usually be found within the content of block-level elements.
Now, for the most part it was the distinction of these elements that determined the document structure. Because of the increased emphasis on semantics and structure in HTML5 the content model has undergone a drastic change with several new content models being introduced and by assigning elements as belonging to multiple content models. This allows authors to create more sophisticated document structures and to write more meaningful code. Unfortunately, this is also a feature of HTML5 that's not discussed as much as the new elements or programming interfaces.
Without an understanding of these content models, taking advantage of HTML5's improved document structure or even being able to structure documents properly can be difficult. HTML5 contains seven main content models. They are Metadata, Embedded, Interactive, Heading, Phrasing, Flow, and Sectioning. Let's take a closer look at each of these and a few sample elements that belong to these content models.
Now, metadata content is defined as being content that sets up the presentation or behavior of the rest of the content. You'll primarily find these elements in the head of the document and sample elements include the link, meta, noscript, script, and title elements. Embedded content is any content that imports other resources into the document. Sample elements include the object, video, canvas, and embed elements. Interactive content is any content specifically intended for user interaction.
Sample elements include the anchor tag, details, object, and the video element if controls are enabled. Heading content defines the header of a section, which can either be explicitly marked up with sectioning elements or implied by the heading content itself. Heading content elements contain the heading tags, h1 through h6 and the hgroup elements. Now, phrasing content is the text of the document as well as elements used to markup the text within paragraph level structures.
In many ways phrasing content is the same as inline level elements from the HTML 4 specification. Sample elements include the anchor tag, the em, image, label, mark, span, and strong tags. Now, flow content contains the majority of elements in HTML5. Think of these elements as elements that would be included in the normal flow of the document. Now, note here that being identified as flow content has no bearing on how the content is displayed within the user agent.
Sample elements include the anchor tag, article, aside, blockquote, canvas, details, div, em, form, heading tags, hgroup, map, section, span, strong, table. I think you get the idea. As you can see, if they can fit within the body tag, that's probably considered part of flow content. Now, finally, sectioning content is content that defines the scope of headings and footers. Using these elements will create a new section within the document. Section elements include the article, aside, nav, and section tags.
Now, you may have noticed that several elements appeared under multiple content models. The anchor tag for example is part of the flow, phrasing, and interactive content models depending on how it's being used. Now, as you can see from this Venn diagram from what we've specification, there are several overlapping areas of content types. Almost all content is contained within the Flow content model with Phrasing, Embedded, Interactive, and Metadata all being somewhat related to each other. Now, Sectioning and Heading content are separate within the flow and they're used to define the document structure and outline.
Now, I want to point out that at no point have I discussed how these different content model types are supposed to be rendered. HTML5 is concerned with the structure of the markup, not the presentation. Whereas before when you had rules about how block-level and inline elements should be displayed, now the display of elements is left entirely up to the user agent and the CSS employed. While there are rules about which elements can be contained within one another, there's nothing to stop you from displaying images as block-level elements and list items as inline elements.
Now, indeed this is nothing new. Authors have been able to do this through CSS for years now. It's simply the HTML specification finally reflecting the reality of how HTML and CSS should work together. Now, that we understand how content models work in HTML5 we can turn our attention to the outline algorithm which uses content models to define document structure. We're going to examine this in more detail in our next movie.
Get unlimited access to all courses for just $25/month.Become a member
82 Video lessons · 103196 Viewers
61 Video lessons · 89901 Viewers
71 Video lessons · 73508 Viewers
56 Video lessons · 105052 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.
Your file was successfully uploaded.