css 语言 CSS 实现表格数据排序高亮示例

CSS阿木 发布于 2025-06-18 4 次阅读


CSS 实现表格数据排序高亮示例:代码与实践

在Web开发中,表格是展示数据的一种常见方式。为了提高用户体验,我们常常需要对表格数据进行排序和筛选。本文将围绕CSS语言,通过一个示例来展示如何实现表格数据的排序高亮效果。

表格排序是用户交互中的一项基本需求,它可以帮助用户快速找到所需的数据。在实现表格排序功能时,除了JavaScript,CSS也扮演着重要的角色。本文将结合HTML、CSS和JavaScript,实现一个具有排序高亮功能的表格。

准备工作

在开始编写代码之前,我们需要准备以下内容:

1. HTML结构:定义表格的基本结构。

2. CSS样式:设置表格的样式,包括排序按钮的样式。

3. JavaScript逻辑:实现排序功能。

HTML结构

我们需要创建一个简单的HTML表格。以下是一个示例:

html

<!DOCTYPE html>


<html lang="en">


<head>


<meta charset="UTF-8">


<meta name="viewport" content="width=device-width, initial-scale=1.0">


<title>表格排序高亮示例</title>


<link rel="stylesheet" href="styles.css">


</head>


<body>


<table id="data-table">


<thead>


<tr>


<th onclick="sortTable(0)">姓名</th>


<th onclick="sortTable(1)">年龄</th>


<th onclick="sortTable(2)">城市</th>


</tr>


</thead>


<tbody>


<tr>


<td>张三</td>


<td>25</td>


<td>北京</td>


</tr>


<tr>


<td>李四</td>


<td>30</td>


<td>上海</td>


</tr>


<tr>


<td>王五</td>


<td>22</td>


<td>广州</td>


</tr>


</tbody>


</table>


<script src="script.js"></script>


</body>


</html>


CSS样式

接下来,我们需要为表格添加一些样式。以下是一个简单的CSS样式文件`styles.css`:

css

body {


font-family: Arial, sans-serif;


}

table {


width: 100%;


border-collapse: collapse;


}

th, td {


padding: 8px;


text-align: left;


border-bottom: 1px solid ddd;


}

th {


cursor: pointer;


}

tr:hover {


background-color: f5f5f5;


}

.highlight {


background-color: e0e0e0;


}


JavaScript逻辑

我们需要编写JavaScript代码来实现排序功能。以下是一个简单的JavaScript文件`script.js`:

javascript

function sortTable(n) {


var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;


table = document.getElementById("data-table");


switching = true;


// 设置初始排序方向为升序


dir = "asc";


/


当表格切换时,进行循环,直到没有需要切换的行


/


while (switching) {


// 假设没有进行切换


switching = false;


rows = table.rows;


/


遍历表格中的所有行(除了第一行)


/


for (i = 1; i < (rows.length - 1); i++) {


// 获取两行的数据


x = rows[i].getElementsByTagName("TD")[n];


y = rows[i + 1].getElementsByTagName("TD")[n];


/


检查是否需要切换


/


if (dir == "asc") {


if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {


// 如果需要切换,标记为true


shouldSwitch = true;


break;


}


} else if (dir == "desc") {


if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {


shouldSwitch = true;


break;


}


}


}


if (shouldSwitch) {


/


实际进行切换


/


rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);


// 标记为true,表示进行了切换


switching = true;


// 如果是升序,则设置为降序


if (switchcount == 0 && dir == "asc") {


dir = "desc";


} else if (switchcount == 0 && dir == "desc") {


dir = "asc";


}


// 增加切换计数


switchcount++;


} else {


// 如果没有进行切换,则退出循环


if (switchcount == 0 && dir == "asc") {


dir = "desc";


switching = true;


}


}


}


// 高亮显示当前排序列


highlightSortColumn(n);


}

function highlightSortColumn(n) {


var rows = document.getElementById("data-table").rows;


for (var i = 0; i < rows.length; i++) {


rows[i].getElementsByTagName("TH")[n].classList.remove("highlight");


}


rows[0].getElementsByTagName("TH")[n].classList.add("highlight");


}


总结

通过以上代码,我们实现了一个具有排序高亮功能的表格。用户可以通过点击表头来对表格数据进行排序,同时当前排序列会高亮显示,以便用户了解当前排序状态。

在实际项目中,我们可以根据需求对表格进行扩展,例如添加筛选功能、分页功能等。为了提高性能,可以考虑使用更高效的排序算法,如快速排序或归并排序。

希望本文能帮助您了解如何使用CSS实现表格数据排序高亮效果。如果您有任何疑问或建议,请随时提出。