原生table表头固定标题垂直滚动
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
需求场景
最终实现效果
解决思路1. 通过粘性布局`position: sticky;`实现表头固定 2. 给祖先级别元素设置滚动 - 给table设置垂直滚动宽度`width:100%`,结果会发现表格内部不能够撑开100%,设置`height:200px;overflow-y: auto;`能实现垂直方向上的滚动 - 此时建议给table外部增加一个父元素,给其设置`overflow-y: auto;width:100%;height:200px;`完美解决 代码参考:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>原生Table滚动优化</title> <style> .table-box { height: 200px; display: block; overflow-y: auto; border: 1px solid red; } .scroll-table{ width: 100%; overflow-x: auto; text-align: center; } .scroll-table thead{ position: sticky; top: 0; z-index: 3; line-height: 30px; background-color: #ddd; } .scroll-table th,.scroll-table td{ min-width: 110px; border: 1px solid red; } </style> </head> <body>
<div class="table-box"> <table class="scroll-table"> <thead> <tr> </tr> </thead> <tbody> </tbody> </table> </div> <script> const allTables = document.queryselectorAll("table"); let theadHtml = '', hbodyHtml='', tbodyTr = '' for(let i = 0;i<15;i++){ theadHtml+=`<th>表头th-${i}</th>` hbodyHtml+=`<td>表头td-${i}</td>` } for(let i = 0;i<25;i++){ tbodyTr+= `<tr>${hbodyHtml}</tr>` } document.queryselector('thead tr').innerHTML = theadHtml document.queryselector('tbody').innerHTML = tbodyTr </script> </body> </html> 运行效果: 该文章在 2023/8/29 14:21:14 编辑过 |
关键字查询
相关文章
正在查询... |