Skip to content

<aside> 标签

<aside> 标签用于定义与页面主要内容相关但可以独立存在的内容。它通常包含侧边栏、引用、广告、导航组等辅助内容。

概述

<aside> 标签是 HTML5 中引入的语义化标签,用于定义与页面主要内容相关但可以独立存在的内容。这些内容可以增强或补充主内容,但不是核心内容的一部分。

语法

html
<aside>
  <!-- 辅助内容 -->
</aside>

基本用法

侧边栏

html
<main>
  <article>
    <h1>文章标题</h1>
    <p>文章内容...</p>
  </article>
</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>

引用内容

html
<article>
  <h1>文章标题</h1>
  <p>文章内容...</p>
  
  <aside>
    <h2>名词解释</h2>
    <p>HTML:超文本标记语言,用于创建网页的标准标记语言。</p>
  </aside>
  
  <p>继续文章内容...</p>
</article>

实际示例

博客页面布局

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>aside 标签示例</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      line-height: 1.6;
      margin: 0;
      padding: 0;
    }
    
    .container {
      max-width: 1200px;
      margin: 0 auto;
      display: flex;
      gap: 2rem;
      padding: 2rem;
    }
    
    main {
      flex: 3;
    }
    
    article {
      background-color: white;
      padding: 2rem;
      margin-bottom: 2rem;
      border-radius: 8px;
      box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    }
    
    aside {
      flex: 1;
      background-color: #f8f9fa;
      padding: 1.5rem;
      border-radius: 8px;
      border-left: 4px solid #007bff;
    }
    
    aside h2 {
      margin-top: 0;
      color: #333;
      border-bottom: 2px solid #007bff;
      padding-bottom: 0.5rem;
    }
    
    aside ul {
      list-style: none;
      padding: 0;
    }
    
    aside li {
      margin-bottom: 0.5rem;
      padding: 0.5rem 0;
      border-bottom: 1px solid #eee;
    }
    
    aside a {
      text-decoration: none;
      color: #333;
    }
    
    aside a:hover {
      color: #007bff;
    }
  </style>
</head>
<body>
  <div class="container">
    <main>
      <article>
        <header>
          <h1>如何学习网页开发</h1>
          <p>发布于 <time datetime="2023-01-01">2023年1月1日</time></p>
        </header>
        
        <p>学习网页开发是一个循序渐进的过程,需要掌握 HTML、CSS 和 JavaScript 等核心技术。</p>
        
        <h2>HTML 基础</h2>
        <p>HTML 是网页开发的基础,它定义了网页的结构...</p>
        
        <aside>
          <h3>你知道吗?</h3>
          <p>HTML 的全称是 HyperText Markup Language(超文本标记语言)。</p>
        </aside>
        
        <h2>CSS 样式</h2>
        <p>CSS 用于控制网页的外观和布局...</p>
        
        <h2>JavaScript 交互</h2>
        <p>JavaScript 为网页添加交互功能...</p>
      </article>
    </main>
    
    <aside>
      <h2>文章目录</h2>
      <ul>
        <li><a href="#html">HTML 基础</a></li>
        <li><a href="#css">CSS 样式</a></li>
        <li><a href="#js">JavaScript 交互</a></li>
      </ul>
      
      <h2>相关文章</h2>
      <ul>
        <li><a href="#">HTML5 新特性</a></li>
        <li><a href="#">CSS Grid 布局</a></li>
        <li><a href="#">JavaScript ES6 语法</a></li>
        <li><a href="#">响应式设计原理</a></li>
      </ul>
      
      <h2>标签云</h2>
      <div>
        <a href="#" style="font-size: 1.2em;">HTML</a>
        <a href="#" style="font-size: 1.5em;">CSS</a>
        <a href="#" style="font-size: 1em;">JavaScript</a>
        <a href="#" style="font-size: 1.3em;">教程</a>
      </div>
    </aside>
  </div>
</body>
</html>

引用和注释

html
<article>
  <h1>网页开发技术趋势</h1>
  <p>随着技术的发展,网页开发领域也在不断演进...</p>
  
  <p>React 和 Vue 等前端框架已经成为现代网页开发的主流选择<aside>数据来源:2023年前端开发者调查报告</aside>。</p>
  
  <p>这些框架提供了组件化的开发模式,大大提高了开发效率...</p>
  
  <aside>
    <h2>术语解释</h2>
    <dl>
      <dt>组件化</dt>
      <dd>将用户界面拆分为独立、可复用的组件的开发方式。</dd>
      
      <dt>虚拟DOM</dt>
      <dd>一种编程概念,通过在内存中创建虚拟的文档对象模型来优化页面更新性能。</dd>
    </dl>
  </aside>
  
  <p>除了框架,现代网页开发还涉及许多其他技术...</p>
</article>

与相关标签的区别

<div> 的区别

html
<!-- 不推荐:使用 div 表示侧边栏 -->
<div class="sidebar">
  <h2>相关链接</h2>
  <ul>
    <li><a href="#">链接1</a></li>
    <li><a href="#">链接2</a></li>
  </ul>
</div>

<!-- 推荐:使用语义化的 aside 标签 -->
<aside>
  <h2>相关链接</h2>
  <ul>
    <li><a href="#">链接1</a></li>
    <li><a href="#">链接2</a></li>
  </ul>
</aside>

<section> 的区别

html
<!-- section 表示文档中的章节 -->
<section>
  <h2>产品特性</h2>
  <p>产品的各项特性介绍...</p>
</section>

<!-- aside 表示辅助内容 -->
<aside>
  <h2>客户评价</h2>
  <p>客户对产品的评价...</p>
</aside>

响应式侧边栏

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>响应式侧边栏</title>
  <style>
    .content-wrapper {
      display: flex;
      flex-wrap: wrap;
      gap: 2rem;
      max-width: 1200px;
      margin: 0 auto;
      padding: 2rem;
    }
    
    main {
      flex: 3;
      min-width: 300px;
    }
    
    aside {
      flex: 1;
      min-width: 250px;
      background-color: #f8f9fa;
      padding: 1.5rem;
      border-radius: 8px;
    }
    
    @media (max-width: 768px) {
      .content-wrapper {
        flex-direction: column;
      }
      
      aside {
        order: -1; /* 在移动端将侧边栏移到内容上方 */
        background-color: #e9ecef;
      }
    }
  </style>
</head>
<body>
  <div class="content-wrapper">
    <main>
      <article>
        <h1>主内容区域</h1>
        <p>这是页面的主要内容...</p>
        <p>更多内容...</p>
      </article>
    </main>
    
    <aside>
      <h2>侧边栏内容</h2>
      <p>这是辅助内容区域...</p>
      <ul>
        <li><a href="#">链接1</a></li>
        <li><a href="#">链接2</a></li>
        <li><a href="#">链接3</a></li>
      </ul>
    </aside>
  </div>
</body>
</html>

最佳实践

  1. 语义化使用:只在表示辅助内容时使用 <aside> 标签
  2. 内容相关<aside> 的内容应该与主内容相关但不是必需的
  3. 独立性<aside> 的内容应该可以独立存在
  4. 位置灵活<aside> 可以出现在文档的任何位置
  5. 样式设计:通过 CSS 设计合适的样式以区分主内容

浏览器兼容性

<aside> 标签在所有现代浏览器中都得到支持:

  • Chrome
  • Firefox
  • Safari
  • Edge
  • Internet Explorer 9+

对于不支持的旧浏览器,可以通过 CSS 显示声明为块级元素:

css
aside {
  display: block;
}

注意事项

  1. <aside> 标签是块级元素
  2. <aside> 应该包含与主内容相关但不是必需的辅助内容
  3. <aside> 可以出现在文档的任何位置
  4. <aside> 标签没有默认样式,需要通过 CSS 设置
  5. 不要将 <aside> 用作主要的内容容器

相关标签