使用html5 canvas 做一个可以渲染1000条JSON数据的表格 需要表格列的高度可以根据文字的数量自适应
时间: 2024-04-06 13:34:43 浏览: 94
好的,以下是一个简单的使用HTML5 Canvas渲染1000条JSON数据的表格,并且表格列的高度可以根据文字的数量自适应。
HTML代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Canvas Table</title>
<style>
canvas {
border: 1px solid #ccc;
}
</style>
</head>
<body>
<canvas id="myCanvas"></canvas>
</body>
</html>
```
JavaScript代码如下:
```javascript
// 获取Canvas元素
var canvas = document.getElementById('myCanvas');
// 获取Canvas上下文
var ctx = canvas.getContext('2d');
// 数据源
var data = [
{"name": "张三", "age": 18, "gender": "男", "address": "北京市海淀区"},
{"name": "李四", "age": 22, "gender": "女", "address": "上海市浦东新区"},
{"name": "王五", "age": 30, "gender": "男", "address": "广州市天河区"},
// 省略部分数据
{"name": "赵六", "age": 25, "gender": "女", "address": "深圳市南山区"}
];
// 绘制表格函数
function drawTable(data) {
// 设置表格参数
var cellHeight = 30; // 单元格高度
var cellWidth = canvas.width / Object.keys(data[0]).length; // 单元格宽度
var x = 0; // 起始横坐标
var y = 0; // 起始纵坐标
// 绘制表头
ctx.fillStyle = '#ccc'; // 表头背景色
ctx.fillRect(x, y, canvas.width, cellHeight);
ctx.strokeStyle = '#000'; // 表格线颜色
ctx.beginPath();
ctx.moveTo(x, y + cellHeight);
ctx.lineTo(canvas.width, y + cellHeight);
ctx.stroke();
// 绘制表头文字
ctx.fillStyle = '#000'; // 表头文字颜色
ctx.font = 'bold 16px Arial'; // 表头文字字体
for (var key in data[0]) {
ctx.fillText(key, x + cellWidth / 2, y + cellHeight / 2 + 5);
x += cellWidth;
}
// 绘制表格数据
ctx.fillStyle = '#fff'; // 表格数据背景色
ctx.font = '14px Arial'; // 表格数据字体
for (var i = 0; i < data.length; i++) {
x = 0; // 重置横坐标
y += cellHeight; // 计算下一行纵坐标
for (var key in data[i]) {
ctx.fillRect(x, y, cellWidth, cellHeight); // 绘制单元格背景
ctx.strokeRect(x, y, cellWidth, cellHeight); // 绘制单元格边框
ctx.fillText(data[i][key], x + 5, y + cellHeight / 2 + 5); // 绘制单元格文字
x += cellWidth; // 计算下一列横坐标
}
}
// 设置Canvas高度,使表格高度自适应
canvas.height = y + cellHeight;
}
// 调用绘制表格函数
drawTable(data);
```
这样就可以使用HTML5 Canvas渲染1000条JSON数据的表格,并且表格列的高度可以根据文字的数量自适应了。
阅读全文