有一个二维数组,可以动态输入,该二维数有多少行,就用多少个格子展示出来,格子里的数字为数组的行数,格子水平放置。下面是一个演示例子 1 3 3 0 1 2 0 当点击0号格子时,其对应的二维数组第0行内数据为1和3,然后将1号3号格子变色,当点击1号格子时,其对应的二维数组第1行内数据为3,0,1,将3号0号1号格子变色,其他行以此类推,变色持续1秒,用html写出来
时间: 2024-01-12 18:03:48 浏览: 105
好的,以下是一个简单的实现,使用了jQuery库和CSS3动画:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>动态展示二维数组</title>
<style>
.grid {
display: inline-block;
width: 50px;
height: 50px;
text-align: center;
font-size: 20px;
line-height: 50px;
background-color: #eee;
border: 1px solid #ccc;
transition: background-color 0.5s ease;
}
.grid.active {
background-color: #f00;
color: #fff;
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="grid-container"></div>
<script>
var data = [
[1, 3],
[3, 0, 1],
[2, 0]
];
// 动态生成格子
var gridContainer = $("#grid-container");
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
var grid = $("<div class='grid'></div>");
grid.text(i);
grid.attr("data-row", i);
grid.attr("data-col", j);
gridContainer.append(grid);
}
gridContainer.append("<br>");
}
// 绑定点击事件
$(".grid").click(function() {
var row = $(this).data("row");
var col = $(this).data("col");
var rowData = data[row];
for (var i = 0; i < rowData.length; i++) {
var index = rowData[i];
$("[data-row='" + row + "'][data-col='" + index + "']").addClass("active");
}
setTimeout(function() {
$(".grid.active").removeClass("active");
}, 1000);
});
</script>
</body>
</html>
```
解释一下代码:
首先定义了一个二维数组 `data`,用于存储数据。然后使用 jQuery 动态生成格子,每个格子的数字是它所在的行号,同时用 `data-row` 和 `data-col` 属性存储行号和列号。点击格子时,根据它所在的行号,将该行的每个格子变成红色,并添加 `active` 类,同时设置一个定时器,在 1 秒后将所有 `active` 类的格子恢复为原来的样式。
CSS 中定义了格子的样式,包括宽高、背景色、边框等,同时使用 CSS3 动画实现渐变色效果。
该实现比较简单,仅供参考,可以根据实际需求进行修改。
阅读全文