欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

纯css实现table表格固定表头,表内容滚动

程序员文章站 2022-06-02 11:29:48
...

今天在写公司项目的时候,遇到了一个比较xx的问题,现公司的项目使用的是 vue2.0 和 element-ui 搭建的。

那么提到 element-ui 大家都知道,他最实用的一个组件就是表格了,简直是后台管理项目必备选项。

但是现公司的产品和 UI 简直丧心病狂,非让我自己用原生标签DIY,那没办法,只好 coding 了。

但是 coding 的过程中,有个需求是要表头固定,表内容超出滚动的。因为习惯了使用,结果把该有的基础忘得差不多了。。。

下面就是完成需求后,自己写个 demo 记录下,方便下次遇坑解决。

1. 主要两段代码

  1. .conatiner table thead,tbody,tr,th,td {
  2. display: inline-block;
  3. }
  1. .container table tbody {
  2. width: 100%;
  3. max-height: 260px;
  4. overflow-y: auto;
  5. }

主要就是修改表格的整体属性,然后给 tbody 限制高度,溢出显示滚动条

2. 完整代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>固定表头,表内容滚动Demo</title>
  6. </head>
  7. <style>
  8. .container {
  9. width: 500px;
  10. height: 300px;
  11. position: absolute;
  12. top: 50%;
  13. left: 50%;
  14. transform: translate(-50%, -50%);
  15. background-color: #2C3A5B;
  16. }
  17. .container table {
  18. color: #E6E6E6;
  19. font-size: 14px;
  20. width: 100%;
  21. }
  22. .conatiner table thead,tbody,tr,th,td {
  23. display: inline-block;
  24. }
  25. .container table thead {
  26. width: 100%;
  27. height: 40px;
  28. line-height: 40px;
  29. }
  30. .container table thead tr {
  31. width: 100%;
  32. border-bottom: 1px solid #CCC;
  33. box-sizing: border-box;
  34. }
  35. .container table thead tr th:nth-of-type(1) {
  36. width: 100px;
  37. }
  38. .container table thead tr th:nth-of-type(2) {
  39. width: 100px;
  40. }
  41. .container table thead tr th:nth-of-type(3) {
  42. width: auto;
  43. }
  44. .container table tbody {
  45. width: 100%;
  46. max-height: 260px;
  47. overflow-y: auto;
  48. }
  49. .container table tbody tr {
  50. width: 100%;
  51. line-height: 40px;
  52. border-bottom: 1px solid #CCCCCC;
  53. box-sizing: border-box;
  54. }
  55. .container table tbody tr:nth-last-of-type(1) {
  56. border-bottom: none;
  57. }
  58. .container table tbody tr td {
  59. text-align: center;
  60. }
  61. .container table tbody tr td:nth-of-type(1) {
  62. width: 100px;
  63. }
  64. .container table tbody tr td:nth-of-type(2) {
  65. width: 100px;
  66. }
  67. .container table tbody tr td:nth-of-type(3) {
  68. width: auto;
  69. }
  70. </style>
  71. <body>
  72. <div class="container">
  73. <table cellspacing="0" cellspacing="0">
  74. <thead>
  75. <tr>
  76. <th>序号</th>
  77. <th>名称</th>
  78. <th>地址</th>
  79. </tr>
  80. </thead>
  81. <tbody>
  82. <tr>
  83. <td>1</td>
  84. <td>张三</td>
  85. <td>上海市普陀区金沙江路 1518 弄</td>
  86. </tr>
  87. <tr>
  88. <td>2</td>
  89. <td>张三</td>
  90. <td>上海市普陀区金沙江路 1518 弄</td>
  91. </tr>
  92. <tr>
  93. <td>3</td>
  94. <td>张三</td>
  95. <td>上海市普陀区金沙江路 1518 弄</td>
  96. </tr>
  97. <tr>
  98. <td>4</td>
  99. <td>张三</td>
  100. <td>上海市普陀区金沙江路 1518 弄</td>
  101. </tr>
  102. <tr>
  103. <td>5</td>
  104. <td>张三</td>
  105. <td>上海市普陀区金沙江路 1518 弄</td>
  106. </tr>
  107. <tr>
  108. <td>6</td>
  109. <td>张三</td>
  110. <td>上海市普陀区金沙江路 1518 弄</td>
  111. </tr>
  112. <tr>
  113. <td>7</td>
  114. <td>张三</td>
  115. <td>上海市普陀区金沙江路 1518 弄</td>
  116. </tr>
  117. </tbody>
  118. </table>
  119. </div>
  120. </body>
  121. </html>

3. 效果

纯css实现table表格固定表头,表内容滚动

嫌滚动条丑的,可以参考这篇文章 修改浏览器默认滚动条