One today is worth two tomorrows

html实现原生table并设置表格边框的两种方式

虽然第三方表格插件多不胜数,但是很多场景还是需要用到原生<table>,掌握html原生table的实现方法,是前端开发的必备技能。例如:print-js打印、html2canvas生成图片等,用原生table可以规避很多问题。

首先,在写原生<table>之前,我们先认识一下 border-collapse 属性:

border-collapse 属性设置表格的边框是否被合并为一个单一的边框,还是像在标准的 HTML 中那样分开显示。

 

大多数情况下,我们要求表格的边框合并为单一边框,要实现这样的效果,有如下两种方式:

一、利用css属性 border-collapse: collapse设置边框

html部分:

<table style="width: 100%" border="1" cellspacing="1">
      <thead>
          <tr>
            <th rowspan="2">姓名</th>     <!-- rowspan代表单元格纵向合并 -->
            <th colspan="2">个人信息</th>  <!-- colspan代表单元格横向合并 -->
          </tr>
          <tr>
            <th>性别</th>
            <th>年龄</th>
          </tr>
      </thead>
      <tbody>
          <tr>
            <td>张三</td>
            <td></td>
            <td>20</td>
          </tr>
          <tr>
            <td>李四</td>
            <td></td>
            <td rowspan="2">30</td>
          </tr>
          <tr>
            <td>小红</td>
            <td></td>
          </tr>
      </tbody>
</table>
css部分:
table {
      border-collapse: collapse; //合并为一个单一的边框
      border-color: #dfe6ec; //边框颜色按实际自定义即可
}
thead tr th {
      background-color: #f8f8f9; //设置表格标题背景色
      padding: 6px;
      text-align: center;
}
tbody tr td {
      padding: 6px;
      text-align: center;
      height: 34px;//设置单元格最小高度
}
 
二、手动设置td和table的边框:
html部分:
<table style="width: 100%" border="0" cellspacing="0">
      <thead>
          <tr>
            <th rowspan="2">姓名</th>
            <th colspan="2">个人信息</th>
          </tr>
          <tr>
            <th>性别</th>
            <th>年龄</th>
          </tr>
      </thead>
      <tbody>
          <tr>
            <td>张三</td>
            <td></td>
            <td>20</td>
          </tr>
          <tr>
            <td>李四</td>
            <td></td>
            <td rowspan="2">30</td>
          </tr>
          <tr>
            <td>小红</td>
            <td></td>
          </tr>
      </tbody>
</table>

 

css部分:

table {
      border-collapse: separate;
      border-top: 1px solid #dfe6ec;
      border-left: 1px solid #dfe6ec;
    }
thead tr th {
      background-color: #f8f8f9;
      padding: 6px;
      text-align: center;
      border-bottom: 1px solid #dfe6ec;
      border-right: 1px solid #dfe6ec;
}
tbody tr td {
      padding: 6px;
      text-align: center;
      height: 34px;//设置单元格最小高度
      border-bottom: 1px solid #dfe6ec;
      border-right: 1px solid #dfe6ec;
}

 

以上一、二两种方式展示表格效果均如下:

在使用html2canvas生成<table>图片的时候,如果用方式一,会导致生成的图片表格边框过粗,效果如下:

而用方式二手动设置边框,生成的图片和网页显示的表格一致,如下图所示:

因此,生成图片等场景,推荐使用方式二手动设置表格边框的方式实现原生table.

 

 注:cellpadding与cellspacing的区别如下

cellpadding 属性规定单元边沿与单元内容之间的空间,以像素计。

cellspacing 属性规定单元之间的空间,以像素计。若不设置该属性,则其默认值为 cellspacing="2"。

 HTML5 不支持cellpadding与cellspacing属性,cellpadding可使用CSS 代替,设置td和th的内边距padding即可。

 

 

posted @ 2023-07-12 15:19  雙木的碼上人生  阅读(13347)  评论(0编辑  收藏  举报

Have you ever worked hard for yourself in life?