caiselangren 2017-09-25
1.1table布局
1、布局方式
布局方式一:使用table元素及相关元素进行布局。
布局方式二:使用与表格相关的display属性值来模拟表格进行布局。
2、两种布局方式的区别
table元素在HTML中是一个包含语义的标签,它用于描述数据。使用与表格相关的display属性值只是声明了某些元素在浏览器中的样式而不包含语义。
注意:当需要制表展示数据时,不要使用与表格相关的display属性值定义的表格。
3、匿名表格元素——CSStable布局的特性:缺少的表格元素会被浏览器以匿名的方式创建
CSS2.1规范:CSS2.1表格模型中的元素,可能不会全部包含在除HTML之外的文档语言中。这时,那些“丢失”的元素会被模拟出来,从而使得表格模型能够正常工作。所有的表格元素将会自动在自身周围生成所需的匿table对象,使其符合table/inline-table、table-row、table-cell的三层嵌套关系。
意思是如果为某一元素使用“display:table-cell;”属性,而不将其父容器设置为“display:table-row;”属性,则浏览器会默认创建出一个表格行,就好像文档中真的存在一个被声明的表格行一样。
1.2与表格相关的display属性值
1、概述
与表格相关的display属性值使其设置的元素像表格元素那样渲染。
2、详细介绍
display:table;使该元素按table样式渲染。
display:table-row;使该元素按tr样式渲染。
display:table-cell;使该元素按td样式渲染。
display:table-row-group;使该元素按tbody样式渲染。
display:table-header-group;使该元素按thead样式渲染。
display:table-footer-group;使该元素按tfoot样式渲染。
display:table-caption;使该元素按caption样式渲染。
display:table-column;使该元素按col样式渲染。
display:table-column-group;使该元素按colgroup样式渲染。
1.3实例详解——三栏栅格布局
1、使用table及相关元素布局
实例:
<table class="table-one"> <tr> <td>CELL A</td> <td>CELL B</td> <td>CELL C</td> </tr> </table> 或 <table class="table-two"> <tr> <th>CELL A</th> <th>CELL B</th> <th>CELL C</th> </tr> </table>
.table-one,.table-two{ border-spacing: 0; } .table-one td,.table-two th{ width: 100px; height: 36px; border: 1px solid blue; text-align: center; }
2、使用与表格相关的display属性值布局
实例:
.container { display: table; } .row { display: table-row; } .cell { display: table-cell; width: 100px; height: 36px; border: 1px solid blue; line-height:36px; text-align:center; }
<div class="container"> <div class="row"> <div class="cell">CELL A</div> <div class="cell">CELL B</div> <div class="cell">CELL C</div> </div> </div>
以上HTML文档明确地为三个单元格定义了包含它的表格和表格行,使用到了所有创建的CSS类名。然而,可以减少这些标签,移除一行div元素试试:
<div class="row"> <div class="cell">CELL A</div> <div class="cell">CELL B</div> <div class="cell">CELL C</div> </div>
即使上面的代码遗漏了声明表格的那一行,浏览器仍将创建一个匿名的表格行。还可以移除更多的代码:
<div class="cell">CELL A</div> <div class="cell">CELL B</div> <div class="cell">CELL C</div>
以上代码遗漏了声明表格和表格行的代码,浏览器同样会创建出这些匿名的盒对象。即使缺少这些标签元素,最终的效果仍然是一样的。
3、总结
创建匿名表格元素的规则:
这些匿名的盒对象不是变出来的,也不会自动往HTML源码中添加新的标签。
如果布局中调用了匿名元素,浏览器将会根据需要创建一个匿名的盒对象并将它的CSSdisplay属性设置为table、table-row或table-cell中的一个。如果某个元素已经被设置为“display:table-cell;”,而它的父节点(包含它的容器)没有被设置为“display:table-row;”属性,那么浏览器将会创建一个被设置为“display:table-row;”的匿名盒对象来嵌套它。并且与之相邻的属性为“display:table-cell;”的兄弟节点也都会被这个匿名盒对象所包含,直到碰到一个没有被设置为“display:table-cell;”的元素而结束这一行。
表格的现在还是较为常用的一种标签,但不是用来布局,常见处理、显示表格式数据。在HTML网页中,要想创建表格,就需要使用表格相关的标签。<table> <tr> <td>单元格内的文字</td> ...