热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> 网页标准>>正文内容

最大限度的分离table的样式与结构

发布时间:2010年06月22日点击数: 佚名

用table布局,相信大家都知道这是前端很诟病的事.但从HTML标签角度来看table标签,它的功能强大也是毋庸置疑的, 不然, 它也不会曾主导网站布局模式数年(甚至于现在仍有N多整站用table布局的网站). 但CSS+XHTML的兴起,使很多人开始妖魔化table这一标签,甚至以页面中是否有table来评判页面质量,这是不对的. table也有它存在的作用,很多页面功能(比如数据表格类,表单对齐等)用table实现远比用div实现起来简单明了.当然,本文不是为table平反的, 我只是想告诉大家如何最大限度的分离table的样式与结构.
分离样式,当然离不开CSS,而对于table标签,还有更多私有HTML属性可以利用.比如,thead,tr,th,td,tbody,tfoot,colgroup,scope.而本文正是利用这些属性,把样式从table中分离出来.
请看下图:

这是一个有6种背景色的table,如果按常规的table定义,想必大家都知道这个表格写出来该有多麻烦,你得一个个单元格的去加样式,加属性.其实,上面的效果完全可以有着很明了简洁的结构,也可以不通过修改html页面来改变它的样式.
HTML代码:

  1. <table id="itab"> 
  2. <caption>最大限度的分离table的样式与结构,Uh Oh!</caption> 
  3. <colgroup> 
  4. <col class="linenum"> 
  5. <col class="id-1"> 
  6. <col class="id-2"> 
  7. <col class="id-3"> 
  8. </colgroup> 
  9. <thead> 
  10. <tr><th>LINENUM</th><th>ID-1</th><th>ID-2</th><th>ID-3</th></tr> 
  11. </thead> 
  12. <tbody> 
  13. <tr><td>1</td><td>A</td><td>CY</td><td>I</td></tr> 
  14. <tr><td>2</td><td>Br</td><td>S</td><td>KMQ</td></tr> 
  15. <tr><td>3</td><td>HTC</td><td>LLI</td><td>P</td></tr> 
  16. <tr><td>4</td><td>ACC</td><td>G</td><td>QO</td></tr> 
  17. <tr><td>5</td><td>Z</td><td>AHD</td><td>M</td></tr> 
  18. </tbody> 
  19. <tfoot> 
  20. <tr><th>LINE.NO</th><th>ID-1</th><th>ID-2</th><th>ID-3</th></tr> 
  21. </tfoot> 
  22. </table> 

CSS代码:

  1. table#itab{border-collapse:collapseborder:1px solid #999width:50emmargin:0 auto
  2. #itab caption{font-size:1emfont-weight:normalcolor:#a40000
  3. #itab thead{background:#ffc
  4. #itab td,table#itab th{border:1px solid #ccc
  5. #itab td{padding-left:0.8em
  6. #itab tfoot{background:#fcc
  7. #itab .linenum{width:15%background:#0cf
  8. #itab .id-1{width:20%background:#cf9
  9. #itab .id-2{width:25%background:#eee
  10. #itab .id-3{width:30%background:#9ff

如此一看,是不是明了很多.无非是把表格结构化,然后充分利用thead,th,tfoot等table私有属性定义不同的样式.这里不得不提一下colgroup标签,在本文DEMO中,它起到了很重要的作用.但个人认为,它也只能做一些定宽背景定义.它有一个很致命的弱点,不兼容. 比如用它来给列定义字体颜色,ie6下是正常,但其他浏览器好像都是不支持的(如果一定要用它来定义列的字体颜色和对齐方式,可以利用CSS高级选择器first-child为ie6外的浏览器定义样式,暂不详述).但不可否认colgroup是一个很实用的标签.


表格样式的分离,个人觉得完全用CSS分离也不是一个明智的选择,当有些效果CSS无法实现时,或者实现起来比较麻烦时,我们完全可以用JavaScript来实现你想呈现的效果

多思考,多发现,多实践.HTML的每一个标签如同我们身体的每一个器官,都有个它特定的功能,好好利用它们,相信能带给你很多惊喜.

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作