main

<main>

HTML Main元素(<main>)呈现了文档<body>或应用的主体部分。主要内容区域 由 和文档核心主题或应用程序中心功能直接相关与扩展的内容组成。

您可以<main>在同一页面内使用多个元素,这样做是有道理的。例如,如果您有一个页面呈现多个文章(每个文章都包含在一个<article>元素中,每个文章都包含一些额外的内容(例如用于编辑的工具栏,广告等等),那么<main>在每篇文章中包含一个元素以确定该特定文章的主要内容。

内容类别 Flow content, palpable content.
允许的内容 Flow content.
标记遗漏没有; 起始和结束标签都是强制性的。
允许父级任何接受流内容的元素(WHATWG)。但是,W3C规范不允许将<main>用作<article>,<aside>,<footer>,<header>或<nav>的后代。
允许ARIA角色主要角色默认应用于<main>,并且演示角色也是允许的。
DOM界面HTML元素

属性

这个元素只包含全局属性。

使用说明

<main>元素的内容应该对元素包含的文档或部分是唯一的。除非搜索表单是页面的主要功能,否则不应包含在一组文档或文档部分(如侧边栏,导航链接,版权信息,站点徽标和搜索表单)中重复的内容。

<main>对文件大纲没有贡献; 也就是说,不像像元素这样的<body>标题<h2>,<main>并不会影响DOM的页面结构的概念。这是严格的信息。

WHATWG和W3C规范之间的差异

WHATWG的现行标准(MDN规范中使用的规范)和W3C规范<main>之间的元素定义有很大不同。与上面给出的描述相比,这里是两个规格之间的差异:

  • 尽管HTML的WHATWG现行标准允许<main>在一个页面中使用多个元素,但W3C版本的规范并不包含这些元素,除非其中一个元素使用该hidden属性隐藏。

  • WHATWG规范允许<main>在任何允许流量内容的地方使用。在另一方面,HTML规范的W3C版本不允许<main>是的后裔<article>,<aside>,<footer>,<header>,或<nav>。

这似乎是一个短小的差异,但是这个<main>元素在功能层面上是相当简单的,所以如果你不记住这些差异的话,那么这些差异的存在会产生重大的后果。

例子

<!-- other content --> <main> <h1>Apples</h1> <p>The apple is the pomaceous fruit of the apple tree.</p> <article> <h2>Red Delicious</h2> <p>These bright red apples are the most common found in many supermarkets.</p> <p>... </p> <p>... </p> </article> <article> <h2>Granny Smith</h2> <p>These juicy, green apples make a great filling for apple pies.</p> <p>... </p> <p>... </p> </article> </main> <!-- other content -->

规范

SpecificationStatusComment
HTML Living StandardThe definition of '<main>' in that specification.Living StandardRemoved the restriction about using <main> multiple times in a document, or as a descendent of an <article> element.
HTML 5.1The definition of '<main>' in that specification.RecommendationNo change from HTML5.
HTML5The definition of '<main>' in that specification.RecommendationInitial definition.

浏览器兼容性

The <main> element is widely supported. For Internet Explorer 11 and below, it is suggested that an ARIA role of "main" be added to the <main> element to ensure it is accessible (screen readers like JAWS, used in combination with older versions of Internet Explorer, will be able to understand the semantic meaning of the <main> element once this role attribute is included).

<main role="main"> ... </main>

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support261221No167

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)1221No(Yes)7.1