要标识网页的侧边栏,最佳实践是使用语义化的标签,并结合CSS来定义其样式和布局,选择哪个标签取决于侧边栏在整个页面结构中的功能和重要性。

(图片来源网络,侵删)
下面我将从最推荐到其他可选方案,为你详细解释。
最推荐和语义化的选择:<aside>
这是专门为“侧边栏”或“附属内容”设计的HTML5语义化标签,强烈推荐使用。
为什么使用 <aside>?
- 语义清晰:它向浏览器、搜索引擎和屏幕阅读器明确地表明,这部分内容与页面主要内容相关,但不是核心,它可以是相关文章链接、作者信息、广告、导航等。
- SEO友好:搜索引擎能更好地理解页面结构,
<aside> 里的内容不会被误认为是正文的核心内容。
- 可访问性好:使用辅助技术(如屏幕阅读器)的用户能更容易地识别和导航到侧边栏。
如何使用?
你通常会将 <aside> 放在一个容器中(如 <div>),并使用CSS(如Flexbox或Grid)来将其定位到页面的侧边。
示例代码:
(图片来源网络,侵删)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">使用 aside 标签的侧边栏</title>
<style>
body {
display: flex; /* 使用 Flexbox 布局 */
font-family: sans-serif;
}
main {
flex: 1; /* main 内容区域占据剩余所有空间 */
padding: 20px;
}
aside {
width: 250px; /* 定义侧边栏宽度 */
padding: 20px;
background-color: #f4f4f4;
border-left: 1px solid #ddd;
}
</style>
</head>
<body>
<main>
<h1>主要内容</h1>
<p>这里是页面的核心内容,比如文章正文或产品介绍。</p>
</main>
<aside>
<h2>相关链接</h2>
<ul>
<li><a href="#">文章 1</a></li>
<li><a href="#">文章 2</a></li>
<li><a href="#">文章 3</a></li>
</ul>
</aside>
</body>
</html>
经典且灵活的选择:<nav>
如果你的侧边栏主要功能是提供网站的导航链接(比如主导航菜单的侧边版本),<nav> 是一个更精确的选择。
为什么使用 <nav>?
- 专门用于导航:它清晰地告诉浏览器和用户,这个区域包含的是指向网站其他主要页面的链接。
- 可访问性:屏幕阅读器用户可以快速跳转到
<nav> 区域,而无需阅读整个页面内容。
如何与 <aside> 结合?
一个页面可以有多个 <nav>,页眉处有一个主导航 <nav>,侧边栏也可以有一个导航 <nav>,如果侧边栏除了导航还有其他内容(比如广告),最外层可以用 <aside> 包裹,里面再放 <nav>。
示例代码:
<body>
<header>
<!-- 网站头部 -->
</header>
<div class="main-container">
<main>
<!-- 主要内容 -->
</main>
<aside>
<h3>网站导航</h3>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于我们</a></li>
<li><a href="/services">服务</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
</nav>
<h3>赞助商</h3>
<p>这里是广告内容...</p>
</aside>
</div>
</body>
通用但不够语义化的选择:<div>
在过去,或者在一些非常简单的场景下,开发者会使用 <div> 来创建侧边栏。
为什么使用 <div>?
- 简单直接:
<div> 是一个块级容器,没有任何默认样式,纯粹用来包裹和布局内容。
- 兼容性好:所有浏览器都支持。
为什么不推荐作为首选?
- 没有语义:它只是一个“盒子”,对于机器来说,它和包裹文章的
<div> 没有任何区别,这不利于SEO和可访问性。
- 过度使用:滥用
<div> 会导致HTML结构混乱,难以维护。
什么时候可以考虑用?非常简单,且不包含重要的、需要被机器识别的结构信息时,或者当你使用一些UI框架(如Bootstrap)时,它们通常会提供一个基于 <div> 的类名来定义侧边栏。
示例代码:
<body>
<div class="content-wrapper">
<div class="main-content">
<!-- 主要内容 -->
</div>
<div class="sidebar">
<!-- 侧边栏内容 -->
</div>
</div>
</body>
这里的 class="sidebar" 是给CSS用的,用来选择和样式化这个 <div>。
总结与最佳实践
语义
适用场景
推荐度
<aside>
侧边栏包含相关链接、广告、作者信息、标签云等,与主内容相关但非核心。
⭐⭐⭐⭐⭐ (首选)
<nav>
导航链接
侧边栏的主要功能是提供网站的导航菜单。
⭐⭐⭐⭐ (当侧边栏是导航时)
<div>
无语义(通用容器)
快速原型开发、内容非常简单、或依赖CSS类名(如Bootstrap的 .sidebar)时。
⭐⭐ (尽量避免作为首选)
最终建议:
- 优先使用
<aside>:如果你的侧边栏不是主导航,就用 <aside>。
- 使用
<nav>:如果侧边栏是导航,就用 <nav>。
- 结合使用:一个侧边栏可以包含多个部分,例如一个
<nav> 和一个广告 <div>,它们可以被一个大的 <aside> 包裹起来,表示整个区域都是附属内容。
- 用CSS定位:无论你选择哪个HTML标签,最终都是通过CSS(如Flexbox, Grid, 或
position 属性)来将其“推”到页面的侧边位置,HTML负责“是什么”,CSS负责“长什么样”和“在哪”。
这是专门为“侧边栏”或“附属内容”设计的HTML5语义化标签,强烈推荐使用。
为什么使用 <aside>?
- 语义清晰:它向浏览器、搜索引擎和屏幕阅读器明确地表明,这部分内容与页面主要内容相关,但不是核心,它可以是相关文章链接、作者信息、广告、导航等。
- SEO友好:搜索引擎能更好地理解页面结构,
<aside>里的内容不会被误认为是正文的核心内容。 - 可访问性好:使用辅助技术(如屏幕阅读器)的用户能更容易地识别和导航到侧边栏。
如何使用?
你通常会将 <aside> 放在一个容器中(如 <div>),并使用CSS(如Flexbox或Grid)来将其定位到页面的侧边。
示例代码:

(图片来源网络,侵删)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">使用 aside 标签的侧边栏</title>
<style>
body {
display: flex; /* 使用 Flexbox 布局 */
font-family: sans-serif;
}
main {
flex: 1; /* main 内容区域占据剩余所有空间 */
padding: 20px;
}
aside {
width: 250px; /* 定义侧边栏宽度 */
padding: 20px;
background-color: #f4f4f4;
border-left: 1px solid #ddd;
}
</style>
</head>
<body>
<main>
<h1>主要内容</h1>
<p>这里是页面的核心内容,比如文章正文或产品介绍。</p>
</main>
<aside>
<h2>相关链接</h2>
<ul>
<li><a href="#">文章 1</a></li>
<li><a href="#">文章 2</a></li>
<li><a href="#">文章 3</a></li>
</ul>
</aside>
</body>
</html>
经典且灵活的选择:<nav>
如果你的侧边栏主要功能是提供网站的导航链接(比如主导航菜单的侧边版本),<nav> 是一个更精确的选择。
为什么使用 <nav>?
- 专门用于导航:它清晰地告诉浏览器和用户,这个区域包含的是指向网站其他主要页面的链接。
- 可访问性:屏幕阅读器用户可以快速跳转到
<nav> 区域,而无需阅读整个页面内容。
如何与 <aside> 结合?
一个页面可以有多个 <nav>,页眉处有一个主导航 <nav>,侧边栏也可以有一个导航 <nav>,如果侧边栏除了导航还有其他内容(比如广告),最外层可以用 <aside> 包裹,里面再放 <nav>。
示例代码:
<body>
<header>
<!-- 网站头部 -->
</header>
<div class="main-container">
<main>
<!-- 主要内容 -->
</main>
<aside>
<h3>网站导航</h3>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于我们</a></li>
<li><a href="/services">服务</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
</nav>
<h3>赞助商</h3>
<p>这里是广告内容...</p>
</aside>
</div>
</body>
通用但不够语义化的选择:<div>
在过去,或者在一些非常简单的场景下,开发者会使用 <div> 来创建侧边栏。
为什么使用 <div>?
- 简单直接:
<div> 是一个块级容器,没有任何默认样式,纯粹用来包裹和布局内容。
- 兼容性好:所有浏览器都支持。
为什么不推荐作为首选?
- 没有语义:它只是一个“盒子”,对于机器来说,它和包裹文章的
<div> 没有任何区别,这不利于SEO和可访问性。
- 过度使用:滥用
<div> 会导致HTML结构混乱,难以维护。
什么时候可以考虑用?非常简单,且不包含重要的、需要被机器识别的结构信息时,或者当你使用一些UI框架(如Bootstrap)时,它们通常会提供一个基于 <div> 的类名来定义侧边栏。
示例代码:
<body>
<div class="content-wrapper">
<div class="main-content">
<!-- 主要内容 -->
</div>
<div class="sidebar">
<!-- 侧边栏内容 -->
</div>
</div>
</body>
这里的 class="sidebar" 是给CSS用的,用来选择和样式化这个 <div>。
总结与最佳实践
语义
适用场景
推荐度
<aside>
侧边栏包含相关链接、广告、作者信息、标签云等,与主内容相关但非核心。
⭐⭐⭐⭐⭐ (首选)
<nav>
导航链接
侧边栏的主要功能是提供网站的导航菜单。
⭐⭐⭐⭐ (当侧边栏是导航时)
<div>
无语义(通用容器)
快速原型开发、内容非常简单、或依赖CSS类名(如Bootstrap的 .sidebar)时。
⭐⭐ (尽量避免作为首选)
最终建议:
- 优先使用
<aside>:如果你的侧边栏不是主导航,就用 <aside>。
- 使用
<nav>:如果侧边栏是导航,就用 <nav>。
- 结合使用:一个侧边栏可以包含多个部分,例如一个
<nav> 和一个广告 <div>,它们可以被一个大的 <aside> 包裹起来,表示整个区域都是附属内容。
- 用CSS定位:无论你选择哪个HTML标签,最终都是通过CSS(如Flexbox, Grid, 或
position 属性)来将其“推”到页面的侧边位置,HTML负责“是什么”,CSS负责“长什么样”和“在哪”。
如果你的侧边栏主要功能是提供网站的导航链接(比如主导航菜单的侧边版本),<nav> 是一个更精确的选择。
为什么使用 <nav>?
- 专门用于导航:它清晰地告诉浏览器和用户,这个区域包含的是指向网站其他主要页面的链接。
- 可访问性:屏幕阅读器用户可以快速跳转到
<nav>区域,而无需阅读整个页面内容。
如何与 <aside> 结合?
一个页面可以有多个 <nav>,页眉处有一个主导航 <nav>,侧边栏也可以有一个导航 <nav>,如果侧边栏除了导航还有其他内容(比如广告),最外层可以用 <aside> 包裹,里面再放 <nav>。
示例代码:
<body>
<header>
<!-- 网站头部 -->
</header>
<div class="main-container">
<main>
<!-- 主要内容 -->
</main>
<aside>
<h3>网站导航</h3>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于我们</a></li>
<li><a href="/services">服务</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
</nav>
<h3>赞助商</h3>
<p>这里是广告内容...</p>
</aside>
</div>
</body>
通用但不够语义化的选择:<div>
在过去,或者在一些非常简单的场景下,开发者会使用 <div> 来创建侧边栏。
为什么使用 <div>?
- 简单直接:
<div> 是一个块级容器,没有任何默认样式,纯粹用来包裹和布局内容。
- 兼容性好:所有浏览器都支持。
为什么不推荐作为首选?
- 没有语义:它只是一个“盒子”,对于机器来说,它和包裹文章的
<div> 没有任何区别,这不利于SEO和可访问性。
- 过度使用:滥用
<div> 会导致HTML结构混乱,难以维护。
什么时候可以考虑用?非常简单,且不包含重要的、需要被机器识别的结构信息时,或者当你使用一些UI框架(如Bootstrap)时,它们通常会提供一个基于 <div> 的类名来定义侧边栏。
示例代码:
<body>
<div class="content-wrapper">
<div class="main-content">
<!-- 主要内容 -->
</div>
<div class="sidebar">
<!-- 侧边栏内容 -->
</div>
</div>
</body>
这里的 class="sidebar" 是给CSS用的,用来选择和样式化这个 <div>。
总结与最佳实践
语义
适用场景
推荐度
<aside>
侧边栏包含相关链接、广告、作者信息、标签云等,与主内容相关但非核心。
⭐⭐⭐⭐⭐ (首选)
<nav>
导航链接
侧边栏的主要功能是提供网站的导航菜单。
⭐⭐⭐⭐ (当侧边栏是导航时)
<div>
无语义(通用容器)
快速原型开发、内容非常简单、或依赖CSS类名(如Bootstrap的 .sidebar)时。
⭐⭐ (尽量避免作为首选)
最终建议:
- 优先使用
<aside>:如果你的侧边栏不是主导航,就用 <aside>。
- 使用
<nav>:如果侧边栏是导航,就用 <nav>。
- 结合使用:一个侧边栏可以包含多个部分,例如一个
<nav> 和一个广告 <div>,它们可以被一个大的 <aside> 包裹起来,表示整个区域都是附属内容。
- 用CSS定位:无论你选择哪个HTML标签,最终都是通过CSS(如Flexbox, Grid, 或
position 属性)来将其“推”到页面的侧边位置,HTML负责“是什么”,CSS负责“长什么样”和“在哪”。
在过去,或者在一些非常简单的场景下,开发者会使用 <div> 来创建侧边栏。
为什么使用 <div>?
- 简单直接:
<div>是一个块级容器,没有任何默认样式,纯粹用来包裹和布局内容。 - 兼容性好:所有浏览器都支持。
为什么不推荐作为首选?
- 没有语义:它只是一个“盒子”,对于机器来说,它和包裹文章的
<div>没有任何区别,这不利于SEO和可访问性。 - 过度使用:滥用
<div>会导致HTML结构混乱,难以维护。
什么时候可以考虑用?非常简单,且不包含重要的、需要被机器识别的结构信息时,或者当你使用一些UI框架(如Bootstrap)时,它们通常会提供一个基于 <div> 的类名来定义侧边栏。
示例代码:
<body>
<div class="content-wrapper">
<div class="main-content">
<!-- 主要内容 -->
</div>
<div class="sidebar">
<!-- 侧边栏内容 -->
</div>
</div>
</body>
这里的 class="sidebar" 是给CSS用的,用来选择和样式化这个 <div>。
总结与最佳实践
| 语义 | 适用场景 | 推荐度 | |
|---|---|---|---|
<aside> |
侧边栏包含相关链接、广告、作者信息、标签云等,与主内容相关但非核心。 | ⭐⭐⭐⭐⭐ (首选) | |
<nav> |
导航链接 | 侧边栏的主要功能是提供网站的导航菜单。 | ⭐⭐⭐⭐ (当侧边栏是导航时) |
<div> |
无语义(通用容器) | 快速原型开发、内容非常简单、或依赖CSS类名(如Bootstrap的 .sidebar)时。 |
⭐⭐ (尽量避免作为首选) |
最终建议:
- 优先使用
<aside>:如果你的侧边栏不是主导航,就用<aside>。 - 使用
<nav>:如果侧边栏是导航,就用<nav>。 - 结合使用:一个侧边栏可以包含多个部分,例如一个
<nav>和一个广告<div>,它们可以被一个大的<aside>包裹起来,表示整个区域都是附属内容。 - 用CSS定位:无论你选择哪个HTML标签,最终都是通过CSS(如Flexbox, Grid, 或
position属性)来将其“推”到页面的侧边位置,HTML负责“是什么”,CSS负责“长什么样”和“在哪”。
