news 2026/4/15 7:21:30

前端table表格,零基础入门到精通,收藏这篇就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端table表格,零基础入门到精通,收藏这篇就够了

1.写一个简单的table表格框架

<table> <thead class="my-table"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </thead> <tbody> <tr v-for="(item, index) in tableData" :key="index"> <td>{{ item.name }}</td> <td>{{ item.age }}</td> <td>{{ item.address }}</td> </tr> </tbody> </table>

table里的数据在data里返回,以下是实例数据

tableData: [ { name: "张三", age: 30, address: "北京市朝阳区" }, { name: "李四", age: 28, address: "上海市浦东新区" }, { name: "王五", age: 32, address: "广州市天河区" }, { name: "赵六", age: 25, address: "深圳市福田区" }, { name: "孙七", age: 27, address: "成都市武侯区" }, ],

这样我们就拥有了一个没有样式的基础表格

2.为了使表格更好看,我实现了如下几步:

  1. 固定表头,滚动时保留表格上面的标题

将th的 position设置为sticky,固定首行,也就是top=0,为其设置为一个区分的颜色

th { background-color: #3c7ca7; font-weight: bold; position: sticky; top: 0; background-color: rgb(110, 138, 163); }
  1. 将表格间的分割线去除
<table cellspacing="0" > <--...table内容--> </table>
  1. 修改表格背景颜色,字体等样式
    为了好看点还设置了隔行的颜色区分也就是 tr:nth-child(even)
th, td { padding: 20px; text-align: center; font-family: '微软雅黑',"times","courier","arial"; font-weight:"medium"; //border: 1px solid #ccc; font-size: 20px; color: #ffffff; } th { background-color: #3c7ca7; font-weight: bold; position: sticky; top: 0; background-color: rgb(110, 138, 163); } tr:nth-child(even) { background-color: #3c7ca7; }
  1. 自动滚动效果
    首先为了滚动效果的顺利实现,给table类增加一个外框类table-container
    增加滑动框并隐藏
.table-container { overflow-y: scroll; -webkit-overflow-scrolling: touch; } .table-container::-webkit-scrollbar { display: none; }

然后利用timer定时器和scrollTop 属性设置滚动效果,

mounted() { this.timerId = setInterval(() => { const tableContainer = this.$refs.tableContainer; const rowHeight = tableContainer.querySelector('tbody tr').offsetHeight; tableContainer.scrollTop += rowHeight; if (tableContainer.scrollTop == lasttop) { tableContainer.scrollTop = 0; }else{ lasttop=tableContainer.scrollTop } }, 2000); this.init(); }, beforeDestroy() { // 在组件销毁前清除 setInterval clearInterval(this.timerId);

},
由于上面的滚动效果不好,看起来很卡顿,下面优化了滚动效果,加入缓动

mounted() { this.timerId = setInterval(() => { const tableContainer = this.$refs.tableContainer; const rowHeight = tableContainer.querySelector('tbody tr').offsetHeight; tableContainer.scrollTop += rowHeight/30; if (tableContainer.scrollTop == lasttop) { tableContainer.scrollTop = 0; }else{ lasttop=tableContainer.scrollTop } }, 30); this.init(); // this.tableroll(); },
  1. 最后实现效果

3.全部代码

<div class="table-container" ref="tableContainer"> <table cellspacing="0" > <thead class="my-table"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </thead> <tbody> <tr v-for="(item, index) in tableData" :key="index"> <td>{{ item.name }}</td> <td>{{ item.age }}</td> <td>{{ item.address }}</td> </tr> </tbody> </table> </div> export default { data() { tableData: [ { name: "张三", age: 30, address: "北京市朝阳区" }, { name: "李四", age: 28, address: "上海市浦东新区" }, { name: "王五", age: 32, address: "广州市天河区.dfasfaweorfaiadsfasd" }, { name: "赵六", age: 25, address: "深圳市福田区" }, { name: "孙七", age: 27, address: "成都市武侯区" }, ], }, .table-container::-webkit-scrollbar { display: none; } .table-container { position: absolute; left: 80%; top:70%; height: 300px; overflow-y: scroll; -webkit-overflow-scrolling: touch; background-color:rgba(18, 76, 117, 0.7); .my-table { } th, td { padding: 20px; text-align: center; font-family: '微软雅黑',"times","courier","arial"; font-weight:"medium"; //border: 1px solid #ccc; font-size: 20px; color: #ffffff; } th { background-color: #3c7ca7; font-weight: bold; position: sticky; top: 0; background-color: rgb(110, 138, 163); } tr:nth-child(even) { background-color: #3c7ca7; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 15:39:06

JavaWeb_Maven

Maven Maven是一款用于管理和构建Java项目的工具。 Maven概述 Maven的作用&#xff1a; ①依赖管理&#xff1a;方便快捷地管理项目依赖的资源&#xff08;jar包&#xff09; 在pom.xml中配置好jar包的信息后&#xff0c;maven会自动下载jar包&#xff0c;并且加入到当前的…

作者头像 李华
网站建设 2026/4/14 14:21:51

Open-AutoGLM弹窗识别提速实战:如何实现毫秒级响应(独家优化方案)

第一章&#xff1a;Open-AutoGLM弹窗识别提速实战&#xff1a;背景与挑战在自动化测试和智能运维场景中&#xff0c;弹窗识别是保障流程连续性的关键环节。传统基于规则或图像匹配的方法面临响应延迟高、泛化能力弱等问题&#xff0c;难以应对复杂多变的用户界面。Open-AutoGLM…

作者头像 李华
网站建设 2026/4/11 18:44:24

Open-AutoGLM模型压缩与加速秘技,深度剖析高效推理实现路径

第一章&#xff1a;Open-AutoGLM模型压缩与加速概述在大规模语言模型快速发展的背景下&#xff0c;Open-AutoGLM作为高效推理框架的代表&#xff0c;致力于解决模型部署中的资源消耗与响应延迟问题。通过对模型结构进行压缩与推理流程优化&#xff0c;显著降低计算开销&#xf…

作者头像 李华
网站建设 2026/4/13 22:33:19

Open-AutoGLM延迟为何居高不下?一文看懂底层机制与破解之道

第一章&#xff1a;Open-AutoGLM延迟为何居高不下&#xff1f;Open-AutoGLM作为一款基于开源大语言模型的自动化推理框架&#xff0c;其在实际部署中频繁遭遇响应延迟过高的问题。尽管架构设计上支持异步处理与流水线优化&#xff0c;但在高并发场景下&#xff0c;系统端到端延…

作者头像 李华
网站建设 2026/4/11 12:09:25

基于图像识别的物料分拣系统设计 ——图像识别与处理系统设计

2 MATLAB与CNN的特点和应用 2.1 MATLAB软件 2.1.1MATLAB的简介 MATLAB全称是matrix laboratory&#xff0c;意思是矩阵实验室&#xff0c;它是美国MathWorks公司出品的商业数学软件&#xff0c;主要用于开发算法、数据的可视化、做数据的分析以及用作数值计算的高科技计算环境。…

作者头像 李华