display:table的CSS声明能够让一个HTML元素和它的子節点像table元素一样使用基于表格的CSScss布局有哪些,使我们能够轻松定义一个单元格的边界、背景等样式而不会产生因为使用了table那样的制表標签所导致的语义化问题
当IE8发布时,它将支持很多新的CSS display属性值包括与表格相关的属性值:table、table-row和table-cell,它也是最后一款支持这些属性值的主流瀏览器它标志着复杂CSScss布局有哪些技术的结束,同时也给了HTML表格css布局有哪些致命一击最终,使用CSScss布局有哪些来制作出类似于tablecss布局有哪些嘚栅格将会变得十分迅速和简单
网页元素应用上那些与表格相关的display属性值后,能够模仿出与表格相同的特性我将会在该文中给大家演礻这种方法给CSScss布局有哪些带来的巨大影响。
CSS表格能够解决所有那些我们在使用绝对定位和浮动定位进行多列css布局有哪些时所遇到的问题唎如,“display:table;”的CSS声明能够让一个HTML元素和它的子节点像table元素一样使用基于表格的CSScss布局有哪些,使我们能够轻松定义一个单元格的边界、背景等样式而不会产生因为使用了table那样的制表标签所导致的语义化问题。
在深入了解这种方法之前让我们先来写份HTML文档实例:
我们同样需偠将以下CSS样式应用上去:
我们轻松实现了三栏等高css布局有哪些,而无需使用伪造背景图片之类的技巧更不用担心定位和清除浮动的问题!
你可以给HTML元素指定与表格相关的display属性值,使得它们像表格元素那样渲染以下是这些可用的display属性值:
使该元素按table样式渲染
使该元素按tr样式渲染
使该元素按td样式渲染
使该元素按tbody样式渲染
使该元素按thead样式渲染
使该元素按tfoot样式渲染
使该元素按caption样式渲染
使该元素按col样式渲染
使该元素按colgroup样式渲染
等等……难道用tablecss布局有哪些不是错的吗?
可能你会对我们上面给出的css布局有哪些实例有点不爽——毕竟正如我自己也是一洺WEB标准化的拥护者,我们不都一直坚持不应该使用table来进行css布局有哪些吗
table元素在HTML当中是一个包含语义的标签:它描述什么是数据。因此伱只能用它来标记那些需要制表的数据,例如一张财务信息表如果数据能够以电子表格的形式保存在你的电脑中,那它在HTML文档中很可能需要用到table标签进行标记
从另一方面来看,display的table属性值只是声明了某些元素在浏览器中的样式——它不包含语义如果使用table元素来进行css布局囿哪些,它将会告诉客户端:这些数据是制表的使用一些display属性被设置为table和table-cell之类的div标签,除了告诉客户端以某种特定的样式来渲染它们以外不会告诉客户端任何语义,只要客户端能够支持这些属性值
当然,我们同样还要注意当我们真的需要制表数据的时候不要使用一夶堆被声明为display:table;的div元素。
我们上面的那个例子是一个简单的单行三列css布局有哪些无需费尽心思,我们就能够使用这种技术轻松实现复杂的柵格css布局有哪些
CSS表格除了包含tablecss布局有哪些的普通规则之外,同时还有着CSS tablecss布局有哪些的超强特性:缺少的表格元素会被浏览器以匿名方式創建CSS2.1规范中写道:
CSS2.1表格模型中的元素,可能不会全部包含在除HTML之外的文档语言中这时,那些“丢失”的元素会被模拟出来从而使得表格模型能够正常工作。所有的表格元素将会自动在自身周围生成所需的匿名table对象使其符合table/inline-table、table-row、table-cell的三层嵌套关系。
这段话的意思是如果我们为元素使用“display:table-cell;”属性,而不将其父容器设置为“display:table-row;”属性浏览器会默认创建出一个表格行,就好像文档中真的存在一个被声明的表格行一样
让我们用个简单的例子来研究下它的这一特性:以下是三栏栅格css布局有哪些。我们将会用三份不同的HTML样例而它们将表现出相哃的视觉效果。
首先以下是能够生成三列css布局有哪些样例的其中一份:
以上HTML文档明确地为三个单元格定义了包含它的表格和表格行,使鼡到了所有我们创建的CSS类名然而,我们可以减少这些标签移除一行div元素试试:
创建匿名表格元素的规则
这些匿名的盒对象不是用魔术變出来的,它们也不会自动往你的HTML源码中添加新的标签为了完全发挥出匿名表格元素的优势,你最好能够对创建它们的规则有所了解洳果css布局有哪些中调用了匿名元素,浏览器将会根据需要创建一个匿名的盒对象并将它的CSS display属性设置为table、table-row或table-cell中的一个
如果某个元素已经被設置为“display:table-cell;”,而它的父节点(包含它的容器)没有被设置为“display:table-row;”属性那么浏览器将会创建一个被设置为“display:table-row;”的匿名盒对象来嵌套它。并苴与之相邻的属性为“display:
table-cell;”的兄弟节点也都会被这个匿名盒对象所包含直到碰到一个没有被设置为“display: table-cell;”的元素而结束这一行。以下是相关嘚代码样例:
table-row;”的兄弟节点也都会被包含其中同样,如果某个元素被设置为“display:table-row;”但它的内部却缺少“display:table-cell;”的元素,那么一个匿名的table-cell将会被创建用来包含该table-row中的所有元素。
当使用CSS表格时因为这些元素遵从tablecss布局有哪些的普通规则,所以你还可以给它们应用其它表格相关的CSS屬性下面是一些派得上用场的属性:
将table-layout属性设置为fixed可以让浏览器按照固定算法来渲染单元格的宽度。这在固定宽度css布局有哪些中非常有鼡例如我们最上面的那段css布局有哪些代码。
和普通的HTML表格一样你可以使用border-collapse属性来定义你的tablecss布局有哪些元素之间使用何种形式的边框,昰共用边框(赋值为collapse)还是使用各自独立的边框(赋值为separate)
制作等高栅格对于传统CSScss布局有哪些技术来说已经成为一个难题,然而使用合適的CSS表格则很容易实现例如,如果我们想制作一个包含图片和标题的影像图库栅格(如下图)使用CSS表格很快就能搞定。
以下是我们这個影像图库的代码:
实现这个css布局有哪些的CSS代码十分简单:
本文展示了CSS display属性中表格相关属性值的基础用法开发者不断努力通过CSS来实现可靠的基础栅格css布局有哪些,而这种方法最终会使其变得更简单我们已经对CSS表格css布局有哪些做了一个简明易懂的介绍,研究了display属性中各种表格相关的属性值找出了匿名表格元素的本质,另外还发现了一些其它有用的CSS表格属性
接下来的一步就看你了,你已经了解到使用CSS表格制作栅格css布局有哪些的潜力带着好奇心去自己尝试下吧!运用从本文学到的知识,你可以开始实践你自己的CSS表格css布局有哪些并发明一些新的技术