平时要使用 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. 面向对象编程总结--Python

    万物皆为对象.自然环境赋予人类无尽的遐想,而面向对象编程之思想就是来自于大自然.自然界,类和对象比比皆是,比如:鸟类和麻雀,鱼和鲤鱼......其中鸟类就是各种鸟的总称,而麻雀只不过是其中之一(对象) ...

  2. Redis 学习(二) —— 数据类型及操作

    Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...

  3. shell编程之运算符(3)

    declare声明变量类型 declare[+/-][选项]变量名 选项: - : 给变量设定类型属性 + : 取消变量的类型属性 -a : 将变量声明为数组型 -i : 将变量声明为整数型(inte ...

  4. tcping-安装

    1.LINUX安装方法: 下载地址: http://www.linuxco.de/tcping/tcping.html 不过LINUX操作比WINDOWS的差.建议还是使用WINDOWS版本. 2.W ...

  5. 织梦去除tag标签url中的问号

    找到文件 include\taglib\tag.lib.php  大概87行 把 $row['link'] = $cfg_cmsurl."/tags.php?/".urlencod ...

  6. JavaScript 知识点

    JS基础 页面由三部分组成: html:超文本标记语言,负责页面结构 css:层叠样式表,负责页面样式 js:轻量级的脚本语言,负责页面的动效和数据交互 小总结:结构,样式和行为,三者相分离 在htm ...

  7. C#仪器数据文件解析-PDF文件

    不少仪器工作站输出的数据报告文件为PDF格式,PDF格式用于排版打印,但不易于数据解析,因此解析PDF数据需要首先读取到PDF文件中的文本内容,然后根据内容规则解析有意义的数据信息. C#解析PDF文 ...

  8. Linux下ACL权限控制以及用sudo设置用户对命令的执行权限

    ACL权限分配 1.setfacl命令设置文件权限 setfacl -m u:user1:rw root.txt setfacl -m u:user2:rwx root.txt 2.getfacl命令 ...

  9. Python——Web.py詳解

    ubuntu安裝Web.py sudo pip install web.py 測試代碼: import web urls = ( '/(.*)','hello' ) app = web.applica ...

  10. windows转mac-开发环境搭建(二):mac上java环境搭建

    1.首先下载jdk,地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.安 ...