0

0

HTML文档主体内容怎么划分_HTMLmain标签使用教程

星夢妙者

星夢妙者

发布时间:2025-09-17 21:28:01

|

1068人浏览过

|

来源于php中文网

原创

使用<main>标签明确划分页面核心内容,它应包含用户访问的主要信息,如文章标题、正文等,且一个页面只能有一个<main>,不可嵌套在<header>、<nav>、<footer>等辅助区域内部,也不应包含导航、页脚、广告等重复性内容;与无语义的<div>不同,<main>具有明确的语义功能,用于提升可访问性和SEO,常与<article>、<section>等标签配合使用,形成清晰的内容层级结构。

html文档主体内容怎么划分_htmlmain标签使用教程

HTML文档主体内容的划分,核心在于识别并封装页面上最独特、最核心的内容,也就是用户访问这个页面最主要的目的。而HTML5引入的

<main>
标签,正是为了明确这一语义而生。它就像是给你的页面内容定了一个“主基调”,告诉浏览器、辅助技术和搜索引擎,这才是你真正想展示的东西,而非那些导航、页脚或者侧边栏的辅助信息。

解决方案

要划分HTML文档的主体内容,最直接且语义化的方式就是使用

<main>
标签。这个标签应该包含文档的中心主题内容,是用户访问该页面时所期望看到的主要信息。这意味着,诸如全局导航、网站Logo、版权信息、搜索表单(除非搜索功能是页面的主要目的)以及侧边栏内容等重复性或辅助性元素,都不应该被包含在
<main>
标签内。

比如,你正在写一篇博客文章,那么文章的标题、作者信息、正文内容、相关评论区(如果被认为是文章不可分割的一部分)都应该放在

<main>
里。但如果文章旁边有一个“最新文章”的侧边栏,或者顶部有网站的导航栏,这些则不属于
<main>
的范畴。

立即学习前端免费学习笔记(深入)”;

一个页面上只能有一个

<main>
标签,且它不应该作为
<article>
<aside>
<footer>
<header>
<nav>
元素的后代出现。它通常直接放在
<body>
标签下,或者在一个用于布局的
<div>
内,但这个
<div>
本身不应赋予额外的语义。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的博客文章标题</title>
</head>
<body>
    <header>
        <h1>网站Logo或名称</h1>
        <nav>
            <ul>
                <li><a href="#">首页</a></li>
                <li><a href="#">分类</a></li>
                <li><a href="#">关于我们</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <article>
            <h2>这是我的第一篇博客文章</h2>
            <p>发布日期:2023年10月27日 | 作者:张三</p>
            <section>
                <h3>文章简介</h3>
                <p>这篇文章将探讨HTML5中`<main>`标签的用法和重要性。</p>
            </section>
            <section>
                <h3>核心内容</h3>
                <p>深入理解`<main>`标签对于构建语义化、可访问性强的网页至关重要。它不仅帮助搜索引擎理解页面的主要内容,也极大地改善了屏幕阅读器用户的体验。</p>
                <p>想象一下,一个视力受损的用户,通过屏幕阅读器访问你的网站。如果你的主要内容被正确地标记在`<main>`里,他们就可以迅速跳过导航、页脚等辅助信息,直接进入页面的核心内容。这是一种非常友好的用户体验。</p>
            </section>
            <section>
                <h3>相关讨论</h3>
                <p>欢迎在下方评论区分享你对`<main>`标签的看法和使用经验。</p>
            </section>
        </article>
        <!-- 页面主要内容的补充,例如相关文章列表,如果它与当前文章紧密相关且是页面核心功能的一部分 -->
        <aside class="related-posts">
            <h3>更多文章推荐</h3>
            <ul>
                <li><a href="#">HTML语义化标签指南</a></li>
                <li><a href="#">如何优化网页可访问性</a></li>
            </ul>
        </aside>
    </main>

    <aside class="sidebar-ads">
        <h3>广告区域</h3>
        <p>这里通常放一些不属于页面核心内容的推广信息。</p>
    </aside>

    <footer>
        <p>&copy; 2023 我的网站. 版权所有.</p>
    </footer>
</body>
</html>

在上面的例子中,博客文章的标题、正文以及相关的讨论和文章推荐,都被合理地包含在

<main>
标签内,因为它们构成了这个页面最核心的内容。而顶部的导航、网站Logo以及底部的版权信息,则明确地置于
<main>
之外。

<main>
标签与
<div>
<section>
<article>
等有何本质区别?

这确实是初学者常会混淆的地方,毕竟它们看起来都是用来“装内容”的。但它们的语义和用途,有着天壤之别。

首先,

<div>
是通用容器,它没有任何语义。你用它来布局、分组样式,但它不会告诉浏览器或辅助技术“这里是什么类型的内容”。它就像一个普通的盒子,你装什么都行,但盒子本身不代表任何意义。

接着是

<section>
。它代表文档或应用程序的一个通用独立部分,通常包含一个标题。你可以把它想象成书里的一章或者一个主题单元。一个页面可以有很多
<section>
,每个
<section>
都围绕一个特定的主题。比如,一个关于某个产品的页面,可以有一个“产品介绍”的
<section>
,一个“技术参数”的
<section>
,还有一个“用户评价”的
<section>
。这些都是页面内容的不同部分,但它们共同构成了页面的主要内容。

然后是

<article>
。这个标签的语义更强,它代表文档、页面、应用或网站中一个独立、完整、可独立分发的内容单元。比如一篇博客文章、一个新闻报道、一个用户评论或一个交互式小部件。
<article>
的内容应该是独立的,即使脱离了上下文,也应该能被理解。一个页面可以有多个
<article>
(比如一个评论列表),而一个
<article>
内部也可以包含多个
<section>

那么

<main>
呢?它不是用来定义内容的“类型”或“独立单元”的,而是用来定义页面的“核心区域”。它告诉所有人:“这个标签里的内容,是这个页面最重要、最独特的部分,是用户来这里的主要原因。”它是一个页面级别的语义,而
<section>
<article>
是内容级别的语义。

你可以这样理解:一个网站就像一本书。

<main>
是这本书的核心章节内容,而
<header>
<footer>
<nav>
是封面、封底和目录。在核心章节内容(
<main>
)里,你可能有很多不同的章节(
<section>
),而每一章里又可能包含一篇独立的文章(
<article>
)。所以,
<main>
是宏观的,
<section>
<article>
是微观的,它们之间是包含和组织的关系,而非替代关系。
<main>
提供了一个语义化的锚点,让辅助技术可以直接跳到页面的“肉”上。

MusicAI
MusicAI

AI音乐生成工具

下载

如何正确规划HTML文档结构以提升可访问性和SEO?

规划HTML文档结构,不仅仅是把标签堆砌起来,更重要的是要构建一个清晰、逻辑严谨的骨架,这对于可访问性和搜索引擎优化(SEO)都至关重要。

首先,语义化是基石。这不仅指使用

<main>
,还包括
<header>
<nav>
<aside>
<footer>
<article>
<section>
等。正确使用这些标签,能让浏览器、辅助技术(如屏幕阅读器)和搜索引擎更好地理解你页面内容的结构和含义。例如,屏幕阅读器用户可以利用语义化标签快速导航到页面的特定区域,而不是被迫听完所有内容。搜索引擎也能更准确地抓取和索引你的核心内容。

其次,标题层级(

<h1>
<h6>
)的合理使用
<h1>
应该作为页面最主要的标题,通常一个页面只有一个。后续的
<h2>
<h3>
等则应按照内容的逻辑层级递减。不要仅仅为了样式而跳过标题层级,这会严重破坏文档的逻辑结构,让辅助技术用户感到困惑,也可能影响搜索引擎对内容重要性的判断。想象一下,一篇文章直接从
<h1>
跳到
<h3>
,中间的
<h2>
去哪儿了?这就像一本书的目录,突然少了一章。

再来,内容流的逻辑性。你的HTML结构应该反映内容的自然阅读顺序。例如,导航通常在顶部或左侧,主要内容在中间,相关信息或广告在侧边栏,版权信息在底部。这种直观的布局和代码顺序,不仅用户易于理解,也让搜索引擎更容易识别页面的主要内容和其上下文关系。

可访问性考虑

  • 链接和按钮的描述性文本:避免使用“点击这里”或“更多”,而是使用“了解更多关于HTML语义化”这样有意义的文本。
  • 图片alt属性:为所有非装饰性图片提供有意义的alt文本,以便屏幕阅读器用户理解图片内容,也有助于SEO。
  • 表单标签:使用
    <label>
    标签与表单控件关联,提升可访问性。
  • ARIA属性:在原生HTML语义不足以表达复杂UI组件(如自定义下拉菜单、模态框)时,谨慎使用ARIA属性来增强语义。

SEO考量

  • 关键词布局:在
    <h1>
    <main>
    内的内容以及其他标题中自然地融入关键词,但切忌堆砌。
  • 内部链接:在相关内容之间建立内部链接,帮助搜索引擎发现更多页面,并传递页面权重。
  • 移动优先:确保你的HTML结构在各种设备上都能良好地呈现和交互。Google现在采用移动优先索引。

一个规划良好的HTML结构,就像一个精心搭建的骨架,它不仅能让你的内容看起来整洁有序,更能让你的网站在可访问性和搜索引擎排名上获得双重收益。这是一种对用户和搜索引擎都负责任的态度。

使用
<main>
标签时有哪些常见的误区和最佳实践?

即便

<main>
标签的初衷很明确,但在实际开发中,仍有一些常见的误区,以及一些值得遵循的最佳实践。

常见误区:

  1. 一个页面有多个
    <main>
    标签
    :这是最常见的错误。HTML5规范明确规定,一个文档中只能有一个
    <main>
    标签。如果你有多个主要内容区域,那可能需要重新思考你的页面结构,或者考虑使用
    <section>
    <article>
    来区分不同的内容块。例如,一个包含多篇独立文章的博客列表页,每篇文章都应该是
    <article>
    ,而不是每个都套一个
    <main>
  2. 将辅助内容放入
    <main>
    :有时候开发者会把一些辅助性的侧边栏(如广告、不相关的最新文章列表)或者重复的导航也塞进
    <main>
    里。记住,
    <main>
    是为独特且核心的内容服务的。那些在其他页面也会出现或者与当前页面主题关联不大的内容,就不应该在里面。
  3. <main>
    当作普通的
    <div>
    来用
    :仅仅因为它是一个块级元素,就用它来做布局,而忽视其语义。这和用
    <div>
    没什么两样,失去了它提升可访问性和SEO的价值。
  4. <main>
    嵌套在
    <footer>
    <header>
    <nav>
    等标签内
    :这是不允许的。
    <main>
    应该处于这些语义化区域的同级或更高级别,表示它是独立于这些辅助区域的核心内容。

最佳实践:

  1. 严格遵守“一个页面一个
    <main>
    ”的原则
    :这是规范,也是最佳实践。如果你的页面内容确实复杂,需要区分多个“主要”部分,那可能意味着你的页面设计过于臃肿,或者你需要更细致地使用
    <article>
    <section>
  2. <main>
    直接放置在
    <body>
    :这是最清晰、最直接的方式,避免了不必要的嵌套,也让其语义更加突出。当然,为了布局需要,将其包裹在一个无语义的
    <div>
    中也是可以接受的,但要确保这个
    <div>
    不赋予额外的语义。
  3. 确保
    <main>
    内的内容是页面最核心、最独特的部分
    :在放置内容前,问自己:“用户来到这个页面,最想看到什么?什么内容是这个页面独有的?”答案就是应该放在
    <main>
    里的。
  4. 结合其他语义化标签协同工作
    <main>
    是宏观的,它里面可以包含
    <article>
    <section>
    <h1>
    <h6>
    等更细致的语义化标签。它们共同构建了一个清晰、有层次感的文档结构。例如,一篇博客文章的
    <main>
    里,可能有一个
    <article>
    <article>
    里又包含多个
    <section>
    ,每个
    <section>
    都有自己的标题。
  5. 进行可访问性测试:使用屏幕阅读器(如NVDA、JAWS或macOS的VoiceOver)测试你的页面。看看用户是否能方便地跳到主要内容区域。
    <main>
    标签默认带有
    role="main"
    的ARIA属性,这使得屏幕阅读器用户可以方便地通过快捷键(如D键)直接跳到主要内容区域,极大地提升了用户体验。
  6. 注重内容而非样式
    <main>
    标签的价值在于其语义,而非默认样式。不要为了样式而滥用它,也不要因为它的默认样式不符合预期就避开它。样式可以通过CSS来控制,语义则由HTML标签本身提供。

总的来说,

<main>
标签并非一个可有可无的
<div>
替代品,它承载着重要的语义作用。正确地使用它,不仅能让你的HTML代码更规范、更易读,更能显著提升网站的可访问性和搜索引擎友好度,最终带来更好的用户体验和更高的网站价值。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

550

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

472

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

299

2025.12.30

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

229

2025.12.30

html5空格代码怎么写
html5空格代码怎么写

在HTML5中,空格不能直接通过键盘空格键实现,需使用特定代码。本合集详解常用空格写法:&nbsp;(不间断空格)、&ensp;(半个中文空格)、&emsp;(一个中文空格)及CSS的white-space属性等方法,帮助开发者精准控制页面排版,避免因空格失效导致布局错乱,适用于新手入门与实战参考。

107

2025.12.30

html5怎么做网站教程
html5怎么做网站教程

想从零开始学做网站?这份《HTML5怎么做网站教程》合集专为新手打造!涵盖HTML5基础语法、页面结构搭建、表单与多媒体嵌入、响应式布局及与CSS3/JavaScript协同开发等核心内容。无需编程基础,手把手教你用纯HTML5创建美观、兼容、移动端友好的现代网页。附实战案例+代码模板,快速上手,轻松迈出Web开发第一步!

165

2025.12.31

HTML5建模教程
HTML5建模教程

想快速掌握HTML5模板搭建?本合集汇集实用HTML5建模教程,从零基础入门到实战开发全覆盖!内容涵盖响应式布局、语义化标签、Canvas绘图、表单验证及移动端适配等核心技能,提供可直接复用的模板结构与代码示例。无需复杂配置,助你高效构建现代网页,轻松上手前端开发!

53

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

73

2025.12.31

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS教程
CSS教程

共754课时 | 43.2万人学习

Markdown标记语言快速入门
Markdown标记语言快速入门

共30课时 | 3.5万人学习

布尔教育jQuery实战视频教程
布尔教育jQuery实战视频教程

共37课时 | 8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号