HTML 列表项标签 - <li>

什么是 <li> 标签?

<li> 标签用于定义HTML列表中的列表项。它是列表的基本组成单位,必须嵌套在有序列表(<ol>)、无序列表(<ul>)或菜单列表(<menu>)中使用。

基本语法

在有序列表中使用

html
<ol>
  <li>列表项1</li>
  <li>列表项2</li>
  <li>列表项3</li>
</ol>

在无序列表中使用

html
<ul>
  <li>列表项1</li>
  <li>列表项2</li>
  <li>列表项3</li>
</ul>

浏览器默认样式

浏览器会为列表项添加默认样式:

  • 在无序列表中显示为项目符号(通常是实心圆点)
  • 在有序列表中显示为数字或字母编号
  • 默认的内边距和外边距
  • 列表项之间的默认间距

这些默认样式可以通过CSS进行自定义。

主要属性

1. value 属性

指定列表项的编号值,仅在有序列表(<ol>)中有效。该属性的值必须是整数。

示例:

html
<ol>
  <li value="10">列表项1</li> <!-- 显示为10 -->
  <li>列表项2</li> <!-- 自动递增为11 -->
  <li value="20">列表项3</li> <!-- 显示为20 -->
  <li>列表项4</li> <!-- 自动递增为21 -->
</ol>

2. type 属性(已废弃)

在HTML5中,<li>标签的type属性已被废弃,建议在父元素<ol>上使用type属性或使用CSS替代。

不推荐使用

html
<ol>
  <li type="A">列表项1</li>
  <li type="A">列表项2</li>
</ol>

推荐使用

html
<ol type="A">
  <li>列表项1</li>
  <li>列表项2</li>
</ol>

全局属性

<li> 标签支持所有HTML全局属性,常用的包括:

属性 描述
class 为列表项指定类名
id 为列表项指定唯一ID
style 内联样式
title 鼠标悬停时显示的提示文本
lang 指定列表项内容的语言

最佳实践

1. 正确嵌套列表项

列表项可以包含其他HTML元素,包括嵌套的列表。但要确保嵌套结构正确。

示例:

html
<ul>
  <li>水果
    <ul>
      <li>苹果</li>
      <li>香蕉</li>
      <li>橙子</li>
    </ul>
  </li>
  <li>蔬菜
    <ul>
      <li>胡萝卜</li>
      <li>西兰花</li>
      <li>番茄</li>
    </ul>
  </li>
</ul>

2. 使用CSS自定义列表项样式

使用CSS可以完全自定义列表项的外观,包括项目符号、编号样式、间距等。

示例:

html
<style>
  /* 自定义无序列表的项目符号 */
  ul.custom-bullets li {
    list-style-type: square;
  }
  
  /* 使用图片作为项目符号 */
  ul.image-bullets {
    list-style-image: url('bullet.png');
  }
  
  /* 自定义有序列表的编号 */
  ol.custom-numbers {
    list-style-type: decimal-leading-zero;
  }
  
  /* 自定义列表项的间距和样式 */
  .styled-list li {
    margin-bottom: 10px;
    padding: 5px;
    background-color: #f0f0f0;
    border-radius: 3px;
  }
</style>

<ul class="custom-bullets">
  <li>列表项1</li>
  <li>列表项2</li>
</ul>

<ol class="custom-numbers">
  <li>列表项1</li>
  <li>列表项2</li>
</ol>

<ul class="styled-list">
  <li>带背景的列表项1</li>
  <li>带背景的列表项2</li>
</ul>

3. 使用语义化内容

列表项中可以包含各种HTML元素,如链接、图片、段落等,但应该保持内容的语义化。

示例:

html
<ul>
  <li>
    <a href="#">
      <img src="product1.jpg" alt="产品1">
      <h3>产品名称</h3>
      <p>产品描述</p>
      <span class="price">¥99</span>
    </a>
  </li>
  <li>
    <a href="#">
      <img src="product2.jpg" alt="产品2">
      <h3>产品名称</h3>
      <p>产品描述</p>
      <span class="price">¥199</span>
    </a>
  </li>
</ul>

4. 避免滥用列表

列表应该用于组织相关的项目集合,不要为了布局目的而滥用列表。如果内容之间没有明显的列表关系,应该考虑使用其他HTML元素。

5. 保持列表的简洁性

每个列表项应该保持相对简洁,避免包含过多的复杂内容,以免影响可读性。

常见应用场景

1. 导航菜单

html
<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">产品</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>
</nav>

2. 产品列表

html
<h2>热门产品</h2>
<ul class="product-list">
  <li>
    <img src="product1.jpg" alt="产品1">
    <h3>智能手机</h3>
    <p>高性能处理器,高清屏幕</p>
    <span class="price">¥5999</span>
    <button>加入购物车</button>
  </li>
  <li>
    <img src="product2.jpg" alt="产品2">
    <h3>笔记本电脑</h3>
    <p>轻薄设计,长效续航</p>
    <span class="price">¥7999</span>
    <button>加入购物车</button>
  </li>
</ul>

3. 步骤列表

html
<h2>安装步骤</h2>
<ol>
  <li>下载安装包</li>
  <li>运行安装程序</li>
  <li>接受许可协议</li>
  <li>选择安装路径</li>
  <li>等待安装完成</li>
  <li>启动程序</li>
</ol>

4. 嵌套列表

html
<h2>课程大纲</h2>
<ol>
  <li>HTML
    <ul>
      <li>基础语法</li>
      <li>标签和属性</li>
      <li>表单和表格</li>
    </ul>
  </li>
  <li>CSS
    <ul>
      <li>选择器</li>
      <li>盒模型</li>
      <li>布局技术
        <ol>
          <li>Flexbox</li>
          <li>Grid</li>
          <li>定位</li>
        </ol>
      </li>
    </ul>
  </li>
</ol>

与CSS的结合使用

CSS提供了丰富的属性来自定义列表项的样式:

1. 自定义项目符号/编号

css
/* 无序列表项目符号 */
ul {
  list-style-type: disc; /* 默认 */
  /* 其他选项:circle, square, none */
}

/* 有序列表编号 */
ol {
  list-style-type: decimal; /* 默认 */
  /* 其他选项:lower-alpha, upper-alpha, lower-roman, upper-roman等 */
}

/* 使用图片作为项目符号 */
ul.custom-bullets {
  list-style-image: url('bullet.png');
}

/* 自定义编号颜色 */
li::marker {
  color: #0066cc;
  font-weight: bold;
}

2. 自定义列表布局

css
/* 水平列表 */
ul.horizontal-list {
  list-style-type: none;
  padding: 0;
  margin: 0;
}

ul.horizontal-list li {
  display: inline-block;
  margin-right: 20px;
}

/* 自定义列表项样式 */
li.styled-item {
  background-color: #f8f9fa;
  padding: 10px;
  margin-bottom: 8px;
  border-radius: 5px;
  border-left: 4px solid #0066cc;
}

/* 移除默认样式 */
ul.no-style {
  list-style-type: none;
  padding: 0;
  margin: 0;
}

完整示例

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>
    body {
      font-family: 'Arial', sans-serif;
      max-width: 800px;
      margin: 0 auto;
      padding: 20px;
      line-height: 1.6;
    }
    
    h1 {
      color: #333;
      border-bottom: 2px solid #0066cc;
      padding-bottom: 10px;
    }
    
    h2 {
      color: #0066cc;
      margin-top: 30px;
    }
    
    /* 自定义无序列表 */
    ul.fruit-list {
      list-style-type: square;
      background-color: #f8f9fa;
      padding: 20px 30px;
      border-radius: 5px;
    }
    
    ul.fruit-list li {
      margin-bottom: 8px;
    }
    
    /* 自定义有序列表 */
    ol.step-list {
      list-style-type: decimal-leading-zero;
      border-left: 4px solid #0066cc;
      padding-left: 20px;
    }
    
    ol.step-list li {
      margin-bottom: 12px;
      padding: 5px 0;
    }
    
    /* 产品列表 */
    .product-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
      gap: 20px;
      margin-top: 20px;
    }
    
    .product-item {
      border: 1px solid #ddd;
      border-radius: 5px;
      padding: 15px;
      text-align: center;
      list-style-type: none;
    }
    
    .product-item img {
      max-width: 100%;
      height: auto;
      border-radius: 3px;
      margin-bottom: 10px;
    }
    
    .product-item h3 {
      margin: 10px 0;
      font-size: 18px;
    }
    
    .product-item .price {
      display: block;
      color: #e74c3c;
      font-weight: bold;
      margin: 10px 0;
    }
    
    /* 水平导航 */
    nav ul {
      list-style-type: none;
      padding: 0;
      margin: 0;
      background-color: #333;
      overflow: hidden;
    }
    
    nav ul li {
      float: left;
    }
    
    nav ul li a {
      display: block;
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }
    
    nav ul li a:hover {
      background-color: #111;
    }
  </style>
</head>
<body>
  <h1>HTML 列表项标签的使用</h1>
  
  <!-- 导航菜单 -->
  <nav>
    <ul>
      <li><a href="#">首页</a></li>
      <li><a href="#">产品</a></li>
      <li><a href="#">关于</a></li>
      <li><a href="#">联系</a></li>
    </ul>
  </nav>
  
  <h2>1. 无序列表</h2>
  <ul class="fruit-list">
    <li>苹果</li>
    <li>香蕉</li>
    <li>橙子</li>
    <li>葡萄</li>
    <li>草莓</li>
  </ul>
  
  <h2>2. 有序列表</h2>
  <ol class="step-list">
    <li>准备材料</li>
    <li>清洗水果</li>
    <li>切成小块</li>
    <li>加入酸奶</li>
    <li>搅拌均匀</li>
    <li>享用美食</li>
  </ol>
  
  <h2>3. 使用value属性的有序列表</h2>
  <ol>
    <li value="10">第一步(从10开始)</li>
    <li>第二步(自动递增为11)</li>
    <li value="20">第三步(跳到20)</li>
    <li>第四步(自动递增为21)</li>
  </ol>
  
  <h2>4. 产品列表</h2>
  <ul class="product-grid">
    <li class="product-item">
      <img src="https://via.placeholder.com/200" alt="产品1">
      <h3>智能手机</h3>
      <p>高性能处理器,高清屏幕</p>
      <span class="price">¥5999</span>
      <button>加入购物车</button>
    </li>
    <li class="product-item">
      <img src="https://via.placeholder.com/200" alt="产品2">
      <h3>笔记本电脑</h3>
      <p>轻薄设计,长效续航</p>
      <span class="price">¥7999</span>
      <button>加入购物车</button>
    </li>
    <li class="product-item">
      <img src="https://via.placeholder.com/200" alt="产品3">
      <h3>平板电脑</h3>
      <p>高清显示屏,支持手写</p>
      <span class="price">¥3999</span>
      <button>加入购物车</button>
    </li>
  </ul>
  
  <h2>5. 嵌套列表</h2>
  <ol>
    <li>前端开发
      <ul>
        <li>HTML</li>
        <li>CSS
          <ol>
            <li>Flexbox</li>
            <li>Grid</li>
            <li>定位</li>
          </ol>
        </li>
        <li>JavaScript</li>
      </ul>
    </li>
    <li>后端开发
      <ul>
        <li>Python</li>
        <li>Java</li>
        <li>Node.js</li>
      </ul>
    </li>
  </ol>
</body>
</html>

总结

<li> 标签是HTML列表的基本组成单位,用于定义列表中的每个项目。它可以在有序列表、无序列表或菜单列表中使用。通过CSS,我们可以完全自定义列表项的外观和布局。在实际应用中,应该根据内容的语义选择合适的列表类型,并保持列表结构的清晰和简洁。

最后更新:2026-02-07