平时要使用 table 的次数说多不多,说少不少,但每次使用必定会被几个问题“坑”一下,所以这篇博客用来记录下table那些“小坑”。但 table 也会有很多好用的特性,比如内容自动垂直居中,正是因为这一点,垂直居中可以用 display: table-cell 和 vertical-align 实现,同时没有兼容性问题。看来 table 也"还不错"。

一、table自带特性

  (一)当 table 宽度设置为定值时,td 的宽度会自动撑开,按内容长度分配各自宽度(高度同理)。即使给某个 td 设置了一定宽度,其它单元格依旧会自动分配宽度。(这一点跟flex很像)。

        .container{
width: 500px;
height: 120px;
}
.container table{
width: auto;
}

        .container{
width: 500px;
height: 120px;
}
.container table{
width: 100%;
}

  (二)td 内的内容,不论文字、inline元素、还是block元素都会“垂直居中”。

<tr>
<td><span>小红</span></td>
<td>女</td>
<td><div class="block"></div></td>
</tr>
table .block{
display: block;
width: 10px;
height: 10px;
background: green;
}

    想控制 td 内元素垂直方向上的居中方式,用 vertical-align 属性。但要注意一点是,vertical-align 是用来设置子元素相对于父元素的居中方式的,所以该属性要设置在父元素上,即 td 本身。(table 内的 td 默认 vertical-align:middle;)

table tr th,td{
vertical-align: top;
}

  (三)th 标签内的内容会自动垂直水平居中,并且字体加粗。

    一般 th 是 thead 内的单元格,即表头信息。

  (四)table 元素是块级元素,居中原理与块级元素相同。

    不过要注意一点是,用 display:table-cell 方法对其他元素内的内容实现垂直居中时,元素不可以被 display:flex 的元素包裹,否则 vertical-align 会失效。

  (五)table 标签每出现一次,一个 Table 对象就会被创建,Table对象中封装了可以对单元格、行进行直接操纵的API,不用每次都获取标签元素了。

二、table 的边框问题

  table 有个CSS属性 border-collapse,这个属性有两个基本值:separate(默认值)--边框分离,collapse -- 边框合一。这两个属性稍后会提到,暂且先看看给table 中 的各个元素分别添加 border 是什么样。

table{
border: 1px solid black;
}
table tr{
border: 1px solid red;
}
table tr th,td{
border: 1px solid green;
}

  1) 边框分离 border-collapse: separate; 时

table{
border-collapse: separate;
}

    直接给 td 加 border,会让表格看起来有“双层边框”,是因为每个单元格之间有 cellspacing 和 border-spacing。

  2) 边框合一 border-collapse: collapse; 时

table{
border-collapse: collapse;
}

    很明显,最后一种就是我们最需要的那种,但是在“边框分离”状态下,也可以实现类似的效果,就是边框“粗了点”。如需要,请参照第三种方法。

  3) “边框分离”模式下模拟的“边框合一”

table{
border-collapse: separate;
border: 1px solid black;
border-spacing:; /*设置相邻单元格的边框间的距离(仅用于“边框分离”模式)*/
  /*empty-cells:hide; /*不在空单元格周围绘制边框*/
}
table td{
border: 1px solid green;
}

    这个原理就是让 td 的边框与 table 的边框之间的间距变为0,两个 border 挨在一起,看起来像一条 border 罢了。

三、table 的那些坑

  • table高宽是靠内容撑开的 对margin不敏感 可用padding代替
  • table自定义 width 失效时 对table使用 table-layout:fixed;
  • table宽度不够,想要单元格内换行效果时,可在单元格内使用div/p标签包一层,给div/p标签设置定宽,或者div/p标签宽度100%后设置 word-break:break-all;
  • table内的某一行单元格宽度和其他行不同时,可以在 tr 内嵌套 table实现
  • table 中的单元格跨行、跨列(合并单元格)可以用 td 标签自带的属性:rowspan 和 colspan

table问题汇总的更多相关文章

  1. 工作笔记-table问题汇总(vue单文件组件)

    1.vue: computed里定义的数据,在其他地方不能再重新赋值,会报错: Computed property "xxxxxx" was assigned to but it ...

  2. 汇总常用的jQuery操作Table tr td方法

    虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下 ...

  3. Magento Table Rate运费国家代码汇总

    Magento Table Rate是三种内置未调用第三方API运费方式中最强大的一个.通过设置国家,区域,邮编,价格来划分不同的运费等级.该方式基本能够满足轻量级的B2C商城的运费模式.这里收集下国 ...

  4. jQuery操作表格(table)的常用方法、技巧汇总

    摘录自:http://www.jb51.net/article/48943.htm 虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便 ...

  5. DBA_Oracle Table Partition表分区概念汇总(概念)

    2014-06-20 Created By BaoXinjian

  6. bootStrap table 和 JS 开发过程中遇到问题汇总

    1..bootStrap-table表头固定 在table定义的时候给高度属性就可以自动生成滚动条,并且固定表头[height: 220,] 2.为动态生成的DOM元素绑定事件 on("cl ...

  7. Bootstrap table分页问题汇总

    首先非常感谢作者针对bootstrap table分页问题进行详细的整理,并分享给了大家,希望通过这篇文章可以帮助大家解决Bootstrap table分页的各种问题,谢谢大家的阅读. 问题1 :服务 ...

  8. 创建几个常用table展示方式插件

    这次和大家分享的是自己写的一个table常用几种展示格式的js插件取名为(table-shenniu),样式使用的是bootstrap.min.css,还需要引用jquery.min.js包,这个插件 ...

  9. Oracle手边常用70则脚本知识汇总

    Oracle手边常用70则脚本知识汇总 作者:白宁超 时间:2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规 ...

随机推荐

  1. redis requires ruby version 2.2.2的解决方案

    在执行gem install redis时 提示: gem install redis ERROR: Error installing redis: redis requires Ruby versi ...

  2. linux使用i/o内存访问外设

    一.linux中访问外设的方法. 1.IO端口(IO port) linux系统给外设分配不同的端口号,linux利用端口号来访问设备(驱动) (cpu x86) cpu访问外设通过端号,访问通过地址 ...

  3. LeetCode - 657. Judge Route Circle

    Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot m ...

  4. tomcat管理授权:tomcat-users.xml

    ou are not authorized to view this page. If you have already configured the Manager application to a ...

  5. linux下双网卡的绑定

    如果服务器上有两快网卡就可以把它绑定为一块虚拟的网卡,如果一块网卡坏了另一块还可以继续工作,增加了冗余度和负载,具体做法如下: 新建一个虚拟的网卡,命令如下: iv /etc/sysconfig/ne ...

  6. 通过云主机(网关机)远程登录内网mysql

    国内的一些云主机平台(UCloud,阿里云,腾讯云等)走的都是网关机+内网机(即局域网)模式,网关机代理外网访问,不能直接连接内网机器.本文介绍通过远程登录云主机,并设置本地代理的方式,通过sqlyo ...

  7. Sql Server 常用事务处理总结

    在数据库操作中,常用事务写法: 1. 通过 @@error 判断一批sql 执行完毕,是否有异常.  @@error 为系统变量,每次执行完 sql 都会返回一个数值,  0 表示 执行成功 ,非0 ...

  8. Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)

    一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...

  9. bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Sta ...

  10. 对于 @Autowired注解和@service注解的理解

    @Autowired相当于Spring自动给你进行了new一个对象将这个对象放入你的注解所在类里面. @service 是可以让IOC容器对于你注解的类可以在容器中生成相应的bean实例 便于我们进行 ...