虽然第三方表格插件多不胜数,但是很多场景还是需要用到原生<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即可。

html实现原生table并设置表格边框的两种方式的更多相关文章

  1. ImageView设置边框的两种方式

    转载:http://www.2cto.com/kf/201308/239945.html package cc.testimageviewbounds; import android.os.Bundl ...

  2. HTML中设置背景图的两种方式

    HTML中设置背景图的两种方式 1.background    background:url(images/search.png) no-repeat top; 2.background-image ...

  3. keras embeding设置初始值的两种方式

    随机初始化Embedding from keras.models import Sequential from keras.layers import Embedding import numpy a ...

  4. linux 设置开机启动项两种方式

    原文链接:http://blog.csdn.net/karchar/article/details/52489572 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务. 在解问题之前 ...

  5. VS中设置#define _CRT_SECURE_NO_WARNINGS的两种方式

    1.我们在编译老的用C语言的开源项目如lua源包的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过. 2.此时我们有两种解决方案: a.在 ...

  6. 浏览器原生 form 表单POST 数据的两种方式

    我们在提交表单的时候,form表单参数中会有一个enctype的参数.enctype指定了HTTP请求的Content-Type. 常用有两种:application/x-www-form-urlen ...

  7. 如果js设置移动端有两种方式 大家可以参考

    //使用em单位 var scaleObj = { documentEle : document.documentElement, deviceWidth : document.documentEle ...

  8. checkbox设置单选的的两种方式

    一.如果 <input name="ck" type="checkbox">是页面加载就有的 $("#input[name=ck]&quo ...

  9. Git:为Git Bash.exe设置默认起始目录的两种方式(start in、~/.bashrc)

    在协作开发的过程中,我们经常要进行一些项目的上传拉取操作. 在无数次不厌其烦的打开关闭 Git Bash 后,我实在忍受不了作为一个程序员还要每次都要进行如下的小白操作了 cd /d/my-proje ...

  10. css中的border-collapse属性如何设置表格边框线?(代码示例)

    css中的border-collapse属性如何设置表格边框线?本篇文章就给大家介绍css中的border-collapse属性是什么? border-collapse属性设置表格边框线的方法.有一定 ...

随机推荐

  1. 从Chat-GPT看爆火技术概念及医疗领域科技与应用场景

    作者:京东健康 陈刚 一.前言 最近OpenAI在官网上宣告了多模态大模型 GPT-4 的诞生,它可能是迄今为止最好的多模态模型. 主要更新内容如下: 1. 逻辑分析能力更加全面.「考试」能力大幅提升 ...

  2. docker-compose一键部署java开源项目

    这一年干的很多事都是为了降低我的开源项目消息推送平台austin使用门槛. 如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招, ...

  3. [OpenCV-Python] 16 图像平滑

    文章目录 OpenCV-Python:IV OpenCV中的图像处理 16 图像平滑 16.1 平均 16.2 高斯模糊 16.3 中值模糊 16.4 双边滤波 OpenCV-Python:IV Op ...

  4. python打包成exe出现报错如何解决TypeError: an integer is required (got type bytes)

    **python 文件打包成exe可执行文件文件 文章目录 python 一.打包的好处 二.使用步骤 1.打开cmd窗口,先安装pyinstaller 2.在打开的命令行中输入 python 本文章 ...

  5. 我做了一个 VSCode 插件版的 ChatGPT

    大家好,我是风筝 其实很早之前就想学学 VSCode 插件开发了,但是又不知道做什么,加上我这半吊子前端水平,迟迟没有动手. 最近 ChatGPT 火的一塌糊涂,我也一直在用,真的非常好用,有些问题之 ...

  6. 用go设计开发一个自己的轻量级登录库/框架吧(项目维护篇)

    用go设计开发一个自己的轻量级登录库/框架吧(项目维护篇) 本篇将开始讲讲开发库/框架的最开始阶段,也就是搭建一个项目 源码:weloe/token-go: a light login library ...

  7. 2022-10-22:以下go语言代码输出什么?A:moonfdd1;B:编译错误;C:运行时 panic。 package main import “fmt“ func main() {

    2022-10-22:以下go语言代码输出什么?A:moonfdd1:B:编译错误:C:运行时 panic. package main import "fmt" func main ...

  8. 2022-10-16:以下go语言代码输出什么?A:timed out;B:panic;C:没有任何输出。 package main import ( “context“ “fmt“

    2022-10-16:以下go语言代码输出什么?A:timed out:B:panic:C:没有任何输出. package main import ( "context" &quo ...

  9. annotate()使用聚合计数、求和、平均数 raw()执行原生的SQL

    annotate()使用聚合计数.求和.平均数  raw()执行原生的SQL # 按老师分组,求课程的销量 Course.objects.values('Teacher').annotate(vol= ...

  10. Python Numpy 切片和索引(高级索引、布尔索引、花式索引)

    张量(Tensor).标量(scalar).向量(vector).矩阵(matrix) Python Numpy 切片和索引(高级索引.布尔索引.花式索引) Python NumPy 广播(Broad ...