您现在的位置是:网站首页 > 列表的嵌套使用文章详情

列表的嵌套使用

列表的嵌套使用

列表嵌套是HTML中常见的结构,通过<ul><ol><li>标签的组合,可以创建多层级的内容组织方式。这种结构特别适合展示具有父子关系的数据,比如目录、菜单或分类信息。

无序列表的嵌套

无序列表使用<ul>标签定义,列表项用<li>表示。嵌套时只需在<li>内部再放置新的<ul>

<ul>
  <li>水果
    <ul>
      <li>苹果</li>
      <li>香蕉</li>
      <li>橙子</li>
    </ul>
  </li>
  <li>蔬菜
    <ul>
      <li>胡萝卜</li>
      <li>菠菜</li>
    </ul>
  </li>
</ul>

浏览器会为不同层级的列表项自动添加不同样式的项目符号,通常第二级使用空心圆点,第三级使用方块。

有序列表的嵌套

有序列表<ol>的嵌套方式类似,但会为每个层级重新编号:

<ol>
  <li>第一章
    <ol>
      <li>第一节</li>
      <li>第二节</li>
    </ol>
  </li>
  <li>第二章
    <ol>
      <li>第一节</li>
      <li>第二节</li>
    </ol>
  </li>
</ol>

可以通过type属性改变编号样式,如type="A"使用大写字母,type="i"使用小写罗马数字。

混合嵌套

无序列表和有序列表可以混合使用:

<ul>
  <li>前端技术
    <ol>
      <li>HTML</li>
      <li>CSS</li>
      <li>JavaScript</li>
    </ol>
  </li>
  <li>后端技术
    <ol>
      <li>Node.js</li>
      <li>Python</li>
    </ol>
  </li>
</ul>

深度嵌套示例

列表可以嵌套任意多层,但通常不建议超过三层:

<ul>
  <li>公司组织架构
    <ul>
      <li>技术部
        <ul>
          <li>前端组
            <ul>
              <li>UI团队</li>
              <li>交互团队</li>
            </ul>
          </li>
          <li>后端组</li>
        </ul>
      </li>
      <li>市场部</li>
    </ul>
  </li>
</ul>

样式控制

通过CSS可以自定义嵌套列表的样式。例如改变不同层级的符号:

<style>
  ul { list-style-type: disc; }
  ul ul { list-style-type: circle; }
  ul ul ul { list-style-type: square; }
  ol { list-style-type: decimal; }
  ol ol { list-style-type: lower-alpha; }
  ol ol ol { list-style-type: lower-roman; }
</style>

实际应用案例

导航菜单是列表嵌套的典型应用:

<nav>
  <ul class="menu">
    <li><a href="#">首页</a></li>
    <li>
      <a href="#">产品</a>
      <ul class="submenu">
        <li><a href="#">Web应用</a></li>
        <li><a href="#">移动应用</a></li>
      </ul>
    </li>
    <li>
      <a href="#">服务</a>
      <ul class="submenu">
        <li><a href="#">咨询</a></li>
        <li><a href="#">培训</a></li>
      </ul>
    </li>
  </ul>
</nav>

可访问性考虑

为增强可访问性,建议为嵌套列表添加ARIA属性:

<ul role="menu">
  <li role="none">
    <a href="#" role="menuitem">首页</a>
  </li>
  <li role="none">
    <a href="#" role="menuitem" aria-haspopup="true">产品</a>
    <ul role="menu">
      <li role="none">
        <a href="#" role="menuitem">Web应用</a>
      </li>
    </ul>
  </li>
</ul>

动态生成嵌套列表

JavaScript可以动态创建嵌套列表结构:

const data = {
  name: "分类",
  children: [
    {
      name: "电子产品",
      children: [
        { name: "手机" },
        { name: "电脑" }
      ]
    },
    {
      name: "家居用品"
    }
  ]
};

function createList(items) {
  const ul = document.createElement('ul');
  items.forEach(item => {
    const li = document.createElement('li');
    li.textContent = item.name;
    if (item.children) {
      li.appendChild(createList(item.children));
    }
    ul.appendChild(li);
  });
  return ul;
}

document.body.appendChild(createList([data]));

嵌套列表与表格的对比

虽然表格也能展示层级数据,但列表更适合表示纯粹的层次关系:

<!-- 列表方式 -->
<ul>
  <li>部门A
    <ul>
      <li>小组1</li>
      <li>小组2</li>
    </ul>
  </li>
</ul>

<!-- 表格方式 -->
<table>
  <tr>
    <td rowspan="2">部门A</td>
    <td>小组1</td>
  </tr>
  <tr>
    <td>小组2</td>
  </tr>
</table>

嵌套列表的SEO优势

搜索引擎更容易理解嵌套列表的层次关系:

<ul itemscope itemtype="http://schema.org/BreadcrumbList">
  <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <a itemprop="item" href="#">
      <span itemprop="name">首页</span>
    </a>
    <meta itemprop="position" content="1">
  </li>
  <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <a itemprop="item" href="#">
      <span itemprop="name">分类</span>
    </a>
    <meta itemprop="position" content="2">
  </li>
</ul>

我的名片

网名:~川~

岗位:console.log 调试员

坐标:重庆市-九龙坡区

邮箱:cc@qdcc.cn

沙漏人生

站点信息

  • 建站时间:2013/03/16
  • 本站运行
  • 文章数量
  • 总访问量
微信公众号
每次关注
都是向财富自由迈进的一步