十分钟用div实现表格布局

474 阅读1分钟

简述

如今我们写表格大部分都依赖于ui框架。当然有些场景表格使用的很少,且功能简单。引入某个ui框架就显得多余,就简单的用div实现一下了。

先看看带斑马纹表格的样式:

image-20240408194957840.png

css小知识

我们常用的display属性值有:

display: inline | inline-block | block | none
display: flex | grid 
...还有很多

目前我们用到的关键属性:

display: table  /* 作为表格<table>来显示 */
display: table-row /* 作为一个表格的行显示<tr> */ 
display: table-cell /* 作为表格一个单元格来显示类似<th> <td> */
... 还有一些,详细看菜鸟教程

实现

实现起来其实很简单,我们进行简单的布局:

<!-- 表格外层 -->
<div class="table-wrap">
  <!-- 表头 -->
  <div class="table-row">
    <!-- 表格单元格 -->
    <div class="th">产品</div>
    <div class="th">单价</div>
    <div class="th">数量</div>
    <div class="th">计费</div>
  </div>
  <!-- 表格内容 -->
  <div class="table-row table-th">
    <!-- 表格单元格 -->
    <div class="td">影子工作室</div>
    <div class="td">¥360.00</div>
    <div class="td">1</div>
    <div class="td">¥360.00</div>
    </div>
  </div>
</div>

然后就是样式了:

<style>
.table-wrap {
  /* 用表格形式展示 */
  display: table;
  width: 100%;
  border: 2px solid #DCDCDC;
  border-radius: 12px;
}
​
.table-row {
  /* 展示行 */
  display: table-row;
  text-align: center;
}
​
.table-row .th {
  /* 展示表头单元格 */
  display: table-cell;
  padding: 16px 0;
  color: #7d7b84;
  font-size: 24px;
  line-height: 44px;
  border-bottom: 1px solid #E5E6EB;
}
​
.table-row .td {
  /* 展示内容单元格 */
  display: table-cell;
  padding: 16px 0;
  overflow: hidden;
  color: #050231;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 24px;
  line-height: 44px;
}
​
/* 这个加上一个斑马纹 */
.table-th:nth-child(2n + 1) {
  background: #F2F3F7;
}
</style>

参考文档

// 菜鸟教程 display 属性
https://www.runoob.com/cssref/pr-class-display.html