news 2026/3/14 20:02:00

前端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/3/14 15:37:35

从混乱到有序:Open-AutoGLM智能优先级调度的5步落地实践

第一章&#xff1a;从混乱到有序&#xff1a;Open-AutoGLM智能优先级调度的演进之路 在早期的大模型任务调度中&#xff0c;资源争用与任务堆积问题频发&#xff0c;导致系统响应延迟严重。Open-AutoGLM 项目最初采用简单的 FIFO 调度策略&#xff0c;但随着并发任务量激增&…

作者头像 李华
网站建设 2026/3/12 9:32:18

10 个AI写作工具,专科生论文轻松搞定!

10 个AI写作工具&#xff0c;专科生论文轻松搞定&#xff01; AI写作工具&#xff0c;让论文不再难 在当今这个信息爆炸的时代&#xff0c;专科生们面对论文写作的压力日益增大。无论是选题、开题还是撰写初稿&#xff0c;每一个环节都可能成为阻碍学业的“拦路虎”。而随着人工…

作者头像 李华
网站建设 2026/3/11 14:57:33

35岁职场危机遇上AI时代:中年职场人如何逆袭破局?揭秘500万人才缺口背后的职业机遇,普通人也能抓住的AI时代红利!

这并非个例。随着国产大模型DeepSeek等强势崛起&#xff0c;人工智能正从技术层面上升为国家战略高度。人社部报告显示&#xff0c;我国人工智能人才缺口已超过500万&#xff0c;供求比例严重失衡至1:10。智联招聘数据也印证了这一趋势&#xff0c;2025年一季度&#xff0c;算法…

作者头像 李华
网站建设 2026/3/14 7:46:00

3.Mybatis增删改查

3.1 新增持久层踢接口添加方法void add(User user);映射文件添加标签<insert id"add" parameterType"com.itproject.pojo.User"> insert into user(username,sex,address) values(#{username},#{sex},#{address}) </insert>测试&#xff1a;Te…

作者头像 李华
网站建设 2026/3/13 5:50:07

vue3+springboot基于小程序物联网 uniapp菌菇房环境管理系统(编号:443931199)

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 同行可拿货,招校园代理 vue3springboot基于小程序物联网 uniapp菌菇房环境管理…

作者头像 李华