Bootstrap 响应式表格

使用 Bootstrap 创建响应式表格的方法

问题

Bootstrap 如何设置响应式表格?

解答

基本用法

.table-responsive 类包裹表格,当表格宽度超出容器时会出现水平滚动条:

<!-- 始终响应式 -->
<div class="table-responsive">
  <table class="table">
    <thead>
      <tr>
        <th>姓名</th>
        <th>邮箱</th>
        <th>电话</th>
        <th>地址</th>
        <th>公司</th>
        <th>职位</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>张三</td>
        <td>zhangsan@example.com</td>
        <td>13800138000</td>
        <td>北京市朝阳区</td>
        <td>某科技公司</td>
        <td>前端工程师</td>
      </tr>
    </tbody>
  </table>
</div>

按断点响应

可以指定在特定断点以下才启用响应式:

<!-- 小于 576px 时响应式 -->
<div class="table-responsive-sm">
  <table class="table">...</table>
</div>

<!-- 小于 768px 时响应式 -->
<div class="table-responsive-md">
  <table class="table">...</table>
</div>

<!-- 小于 992px 时响应式 -->
<div class="table-responsive-lg">
  <table class="table">...</table>
</div>

<!-- 小于 1200px 时响应式 -->
<div class="table-responsive-xl">
  <table class="table">...</table>
</div>

<!-- 小于 1400px 时响应式 (Bootstrap 5) -->
<div class="table-responsive-xxl">
  <table class="table">...</table>
</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>
  <!-- 引入 Bootstrap CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container cj661">
    <h4>用户列表</h4>
    
    <!-- 响应式表格容器 -->
    <div class="table-responsive">
      <!-- 表格样式:带边框、条纹、悬停效果 -->
      <table class="table table-bordered table-striped table-hover">
        <thead class="table-dark">
          <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>邮箱</th>
            <th>电话</th>
            <th>注册时间</th>
            <th>状态</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>1</td>
            <td>张三</td>
            <td>zhangsan@example.com</td>
            <td>13800138001</td>
            <td>2024-01-15</td>
            <td><span class="badge bg-success">正常</span></td>
            <td>
              <button class="btn btn-sm btn-primary">编辑</button>
              <button class="btn btn-sm btn-danger">删除</button>
            </td>
          </tr>
          <tr>
            <td>2</td>
            <td>李四</td>
            <td>lisi@example.com</td>
            <td>13800138002</td>
            <td>2024-02-20</td>
            <td><span class="badge bg-warning">待审核</span></td>
            <td>
              <button class="btn btn-sm btn-primary">编辑</button>
              <button class="btn btn-sm btn-danger">删除</button>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</body>
</html>

关键点

  • .table-responsive 包裹 <table>,不是加在表格上
  • .table-responsive 会在内容溢出时显示水平滚动条
  • .table-responsive-{sm|md|lg|xl|xxl} 可指定断点,只在该断点以下生效
  • 响应式容器默认 overflow-x: auto
  • 常与 .table-bordered.table-striped 等样式类配合使用