display:table、display:table-row和display:table-cell的用法

display:table和display:table-cell的用法:
建议:尽可能的手写代码,可以有效的提高学习效率和深度。
display属性的table和table-cell属性值不怎么常用,主要是浏览器的兼容性并不好,因为万恶的IE6和IE7还有相当一部分用户在使用,不过并非没有它们展露头角的机会,在display:table-cell的用法简介中已经对display:table-cell做了简单的介绍,但是感觉不够全面,下面就集合实例稍稍全面的介绍一下。
三个属性值的基本概念:
1.table:指定对象作为块元素级的表格,类同于html标签<table>。
2.table-row:指定对象作为表格行,类同于html标签<tr>。
3.table-cell:指定对象作为表格单元格,类同于html标签<td>。
从以上属性值的基本概念定义可以看出,它们可以打造一个非table相关标签建立的表格效果,代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css"> 
.table{ 
  display:table; 
} 
.tr{ 
  display:table-row; 
  width:200px; 
  height:200px; 
} 
.td{ 
  display:table-cell; 
  width:100px; 
  height:100px; 
  background-color:green; 
  border:1px solid red; 
} 
tr{ 
  width:200px; 
  height:200px; 
} 
td{ 
  width:100px; 
  height:100px; 
  background-color:green; 
  border:1px solid red; 
} 
</style> 
</head> 
<body> 
<div class="table"> 
  <div class="tr"> 
    <div class="td"></div> 
    <div class="td"></div> 
  </div> 
</div> 
<br/> 
<table cellpadding="0" cellspacing="0"> 
  <tr> 
    <td></td> 
    <td></td> 
  </tr> 
</table> 
</body> 
</html>

 从以上代码的表现来看,为div添加了相关属性值之后,差不多完全具有了表格的相关特性,当然上面的演示并不能够完全说明表格所具有的相关特性,以上代码只是说明三个属性值的作用。到这里可能会有朋友提出这样的疑问:在众多的实际应用中并没有完整的定义类似表格这样的层次关系,而是往往只有display:table-cell,这是因为,如果一个对象具有display:table-cell,而它的父元素和祖父元素没有定义display:table-row和display:table-cell,那么就会匿名的创建这两个父元素,尽管外观没有任何变化。代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css"> 
.parent{ 
  width:200px; 
  height:200px; 
  background-color:green; 
  display:table-cell; 
  vertical-align:middle; 
} 
.children{ 
  width:60px; 
  height:60px; 
  background-color:red; 
  font-size:12px; 
} 
</style> 
</head> 
<body> 
<div class="parent"> 
   <div class="children">蚂蚁部落</div> 
</div> 
</body> 
</html>

 以上代码中,父元素中具有display:table-cell,但是它并没有父元素或者祖父元素定义display:table-row和display:table-cell。这个时候就会匿名创建两个具有此属性的对象,当然外观是看不出来的。以上代码中之所以子元素可以垂直居中对齐,是因为td元素具有valign属性,而vertical-align:middle只会在具有valign属性的对象中生效,所以上面代码就成功实现了垂直居中效果。在兼容各个浏览器的位置高度div垂直居中效果中,middle对象中使用了display:table-cell,它的父对象parent中也显示声明了display:table-cell,否则会匿名创建两个具有此属性的对象,middle对象的尺寸就会根据内容自适应了,这样在标准浏览器中就不能达到垂直居中效果了。

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=4584

更多内容可以参阅:http://www.softwhy.com/divcss/

你可能感兴趣的:(display:table、display:table-row和display:table-cell的用法)