## 前言
表格作为页面展现中一部分不可获取,尤其在后台管理界面中,我们对之既爱又恨。那么它有哪些样式需要控制呢,又有哪些你所不知道的。本文通过一个简单的table实例来帮你解析实现一个table表格实例所需要的基础知识。
## 基本了解
1. 表格标题用caption标签,标头的用thead, 表格内容用tbody ,一个表格默认只有一个标题一个表格头 一个表格内容,标题标签的高度不算入table 的高度 ,表格的默认样式需要修正初始化
2. 一般情况下针对数据表格建议使用table标签,做好每个表格所需要的枚举数据项总数(如每页10条),做好分页以及意外数据处理,当然也可以用div模拟表格布局。
3. td默认会根据内容扩充的,而且布局不是固定布局,为了统一美化处理,需要对每一个单元格做限制单行高宽,如果必须为多行文本且限制高度,内部再加div高度,td本身写高度以及行高是无法限制的,如果不需要处理的采用自动拓展高度即可
4. 针对数据项的宽度可以采用百分比或者固定数值布局,需要根据不同数据项的需求采用合适的宽高以及样式,例如身份证号、日期等要给合适的宽度,而标题长字段的要给较大的宽度值等
5. 设置宽度只需要在数据项的名称设置一次即可,后面的表格内容布局会自动参考上面的比例
6. colspan为合并列,rowspan为合并行,在布局明显为表格而且有合并单元格时,建议用table实现,简约大方
## 代码实践
* html代码部分
````
<table class="tableDemo" >
<caption >我是表格的标题</caption>
<thead>
<tr><th class="no">编号</th>
<th class="name">姓名</th>
<th class="idno">身份证号</th>
<th class="desc">描述</th></tr>
</thead>
<tbody>
<tr><td>001</td><td>李四赵武</td><td>131102199010242011</td><td>13110219901024201的v的的v的的v的的v的1</td></tr>
<tr><td>002</td><td>张三</td><td>131102199010242011</td><td>13的1</td></tr>
<tr><td>002</td><td>张三</td><td>131102199010242011</td><td>13的1</td></tr>
<tr><td>002</td><td>张三</td><td>131102199010242011</td><td>13的1</td></tr>
<tr><td>002</td><td>张三</td><td>131102199010242011</td><td>13的1</td></tr>
</tbody>
</table>
```
* css代码部分
```
*{
margin: 0;
padding: 0;
}
.tableDemo {
width: 800px;
/*实际高度286px,如果不清楚实际高度可以不写*/
/*height:251px;*/
border: 1px solid grey;
/*采用固定数据项的宽度决定布局*/
table-layout: fixed;
/*控制表格外间距*/
border-spacing: 0;
/* 设置合并边框*/
border-collapse: collapse;
}
/*表格标题栏的样式*/
.tableDemo caption {
height: 40px;
line-height: 40px;
font-size: 30px;
}
/*每一行的数据项*/
.tableDemo tr {
height: 40px;
line-height: 40px;
}
.tableDemo tr th,
.tableDemo tr td {
border: 1px solid grey;
}
/*table中的表格不能做多行超出隐藏 只能通过内部div的设置超出隐藏,这里直接设置内容为单行超出隐藏*/
.tableDemo tr td {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.tableDemo th {
line-height: 40px;
height: 40px;
}
/*针对各个数据项给不同的宽度*/
.tableDemo .no {
width: 100px;
}
.tableDemo .name {
width: 150px;
}
.tableDemo .idno {
width: 250px;
}
```
* 效果图如下
![表格效果图](https://box.kancloud.cn/3b3f341bbe14369876ef9d9dfdfa42be_826x304.png)
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi