两种方法快速生成响应式网页表格 Responsive Table

在HTML中创建响应式表格有多种方法,这里介绍两种。

第一种方法是使用CSS来调整表格的布局和外观,把多列表格转换成两列。

<!DOCTYPE html>
<html>
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>响应式表格例一</title>
		<style>
 			table {
 				width: 100%;
 			}
 			th, td {
 				padding: 8px;
 				text-align: left;
 				border-bottom: 1px solid #ddd;
 			}
 			@media screen and (max-width: 600px) {
 				table {
 					border: 0;
 				}
 				table thead {
 					display: none;
 				}
 				table tr {
 					border-bottom: 3px solid #ddd;
 					display: block;
 					margin-bottom: .625em;
 				}
 				table td {
 					border-bottom: none;
 					display: block;
 					text-align: right;
 				}
 				table td::before {
 					content: attr(data-label);
 					float: left;
 					font-weight: bold;
 					text-transform: uppercase;
 				}
 			}							
		</style>
	</head>
	<body>
		<table>
 			<caption>例一</caption>
 			<thead>
 				<tr>
 					<th>表头 1</th>
 					<th>表头 2</th>
 					<th>表头 3</th>
 				</tr>
 			</thead>
 			<tbody>
 				<tr>
 					<td data-label="表头 1">数据 1</td>
 					<td data-label="表头 2">数据 2</td>
 					<td data-label="表头 3">数据 3</td>
 				</tr>
 				<tr>
 					<td data-label="表头 1">数据 4</td>
 					<td data-label="表头 2">数据 5</td>
 					<td data-label="表头 3">数据 6</td>
 				</tr>
 			</tbody>
		</table>
	</body>
</html>

在这个例子中:

  • 表格被设置为占据其容器宽度的100%。
  •  <thead> 部分是表头。
  •  <tbody> 部分是表数据。
  • CSS 媒体查询 (@media):当屏幕宽度小于或等于600像素时调整表格的布局。在这种情况下,表格被转换为块布局,每一行的单元格都垂直显示。表头被隐藏,数据单元格前缀为其对应的表头标签。
  • data-label 属性用于标记每个数据单元格,然后在CSStd::before中使用content: attr(data-label);显示标签。
响应式表格例一
表格正常显示的风格
响应式表格例一
当浏览器窗口小于等于600像素时,表格结构发生改变。

这种方法确保表格在较小的屏幕上即使可读性和可用性。您可以进一步自定义样式以满足特定的设计需求。

在响应式网页设计中创建可读的表格的另一种方法是使用水平滚动。当你的表格有许多列,无法在较小的屏幕上轻松显示时,这种方法非常适用。

<!DOCTYPE html>
<html>
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>响应式表格例二</title>
		<style>
 			.table-wrapper {
 				overflow-x: auto;
 			}
 			table {
 				width: 100%;
 			}
 			th, td {
 				padding: 8px;
 				text-align: left;
 				border-bottom: 1px solid #ddd;
 			}
 			th {
 				background-color: #f2f2f2;
 			}
		</style>
	</head>
	<body>
		<div class="table-wrapper">
 			<table>
 				<thead>
 					<tr>
 						<th>表头 1</th>
 						<th>表头 2</th>
 						<th>表头 3</th>
 						<th>表头 4</th>
 						<th>表头 5</th>
 					</tr>
 				</thead>
 				<tbody>
 					<tr>
 						<td>数据样本 1</td>
 						<td>数据样本 2</td>
 						<td>数据样本 3</td>
 						<td>数据样本 4</td>
 						<td>数据样本 5</td>
 					</tr>
 				</tbody>
 			</table>
		</div>
	</body>
</html>

在这个例子中,把表格放在一个容器内,容器的宽度会随着浏览器窗口的宽度改变,但表格的宽度保持固定,但表格可以水平滚动。

  • 使用 .table-wrapper 类创建一个容器,允许表格进行水平滚动。
  • overflow-x: auto; 属性确保容器只在必要时显示水平滚动条。

这种方法允许用户在较小的屏幕上水平滚动以查看额外的列,保持可读性而不损害表格的结构。该方法的最大优点是不改变表格的样式和结构,所以是一种优选方案。