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

所属分类: 网页制作 / CSS 阅读数: 2013
收藏 0 赞 0 分享
但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代码:

复制代码
代码如下:

<table id="itab">
<caption>最大限度的分离table的样式与结构,Uh Oh!</caption>
<colgroup>
<col class="linenum">
<col class="id-1">
<col class="id-2">
<col class="id-3">
</colgroup>
<thead>
<tr><th>LINENUM</th><th>ID-1</th><th>ID-2</th><th>ID-3</th></tr>
</thead>
<tbody>
<tr><td>1</td><td>A</td><td>CY</td><td>I</td></tr>
<tr><td>2</td><td>Br</td><td>S</td><td>KMQ</td></tr>
<tr><td>3</td><td>HTC</td><td>LLI</td><td>P</td></tr>
<tr><td>4</td><td>ACC</td><td>G</td><td>QO</td></tr>
<tr><td>5</td><td>Z</td><td>AHD</td><td>M</td></tr>
</tbody>
<tfoot>
<tr><th>LINE.NO</th><th>ID-1</th><th>ID-2</th><th>ID-3</th></tr>
</tfoot>
</table>

CSS代码:

复制代码
代码如下:

table#itab{border-collapse:collapse; border:1px solid #999; width:50em; margin:0 auto}
#itab caption{font-size:1em; font-weight:normal; color:#a40000}
#itab thead{background:#ffc}
#itab td,table#itab th{border:1px solid #ccc}
#itab td{padding-left:0.8em}
#itab tfoot{background:#fcc}
#itab .linenum{width:15%; background:#0cf}
#itab .id-1{width:20%; background:#cf9}
#itab .id-2{width:25%; background:#eee}
#itab .id-3{width:30%; background:#9ff}

如此一看,是不是明了很多.无非是把表格结构化,然后充分利用thead,th,tfoot等table私有属性定义不同的样式.这里不得不提一下colgroup标签,在本文DEMO中,它起到了很重要的作用.但个人认为,它也只能做一些定宽背景定义.它有一个很致命的弱点,不兼容. 比如用它来给列定义字体颜色,ie6下是正常,但其他浏览器好像都是不支持的(如果一定要用它来定义列的字体颜色和对齐方式,可以利用CSS高级选择器first-child为ie6外的浏览器定义样式,暂不详述).但不可否认colgroup是一个很实用的标签.
表格样式的分离,个人觉得完全用CSS分离也不是一个明智的选择,当有些效果CSS无法实现时,或者实现起来比较麻烦时,我们完全可以用JavaScript来实现你想呈现的效果.比如隔行换色,鼠标划过变色等效果(可扩展阅读奇或偶数行高亮显示及鼠标划过高亮显示类).
多思考,多发现,多实践.HTML的每一个标签如同我们身体的每一个器官,都有个它特定的功能,好好利用它们,相信能带给你很多惊喜.
更多精彩内容其他人还在看

Opera中国的WEB标准课程

网页制作Webjx文章简介:在这篇文章里,我要向大家介绍我和其他很多人花费数月时间开发的一个课程——Web标准课程,该课程旨在向大家提供Web设计和开发的坚实基础,无论读者是谁,此教程完全免费、可访问,并且不需要预备知识。当然,我主要还
收藏 0 赞 0 分享

CSS样式表渐进增强的基本概念

网页制作Webjx文章简介:如果你挠着头想弄清楚优雅降级和渐进增强的区别,我告诉你,这是视角问题。优雅降级和渐进增强都考虑网站在各种设备的各种浏览器上如何良好运转。两者区别的关键在于它们各自关注的焦点,以及这种关注对工作流程的影响
收藏 0 赞 0 分享

简单介绍Web Developer插件制作网页

网页制作Webjx文章简介:Firefox浏览器是一个良好支持W3C标准的开放源代码的浏览器,拥有Linux/Windows/Mac版本。因为Firefox浏览器良好支持W3C标准,所以使用Firefox来调试网页是非常好的。 Firefox浏览器是
收藏 0 赞 0 分享

CSS布局带来的巨大影响:CSS display属性值

网页制作Webjx文章简介:网页元素应用上那些与表格相关的display属性值后,能够模仿出与表格相同的特性。我将会在该文中给大家演示这种方法给CSS布局带来的巨大影响。 应原书编辑要求,先在文章顶部给出链接:《Everything You
收藏 0 赞 0 分享

用div css模拟表格对角线

这只是探讨一种CSS模拟表格对角线的用法,实际在工作中可能觉得这样做有点小题大作,这不是本主题讨论的重点。如果对此深以为然的朋友,请一笑过之 首先声明: 这只是探讨一种CSS模拟表格对角线的
收藏 0 赞 0 分享

IE Firefox在css中的差别 (部分)

1、单位问题 问题:任何距离的数值ie可以不加单位,ff必须要求写单位(0除外) 解决:写全单位如padding:0px; 2、水平居中 问题:div里的内容,ie默认为center,而ff默认left 解决:mairgin:0px auto; 3、高度问题
收藏 0 赞 0 分享

不用js可以实现信息提示效果

[code] <style> body { font:verdena; font-size:14px; color:#000 } h1{ font:verdena; font-size:22px; color:#000 } h2{ font:verdena;
收藏 0 赞 0 分享

CSS解决未知高度的垂直水平居中自适应问题

今天有人问起,晚上试着写出来,供参考; 以下代码兼容主流浏览器IE6、IE7、Firefox、Opera。 从最简单的开始………… 一、如何让一个DIV水平居中? 这个简单不作过多说明! [code] <st
收藏 0 赞 0 分享

CSS cursor 属性 -- 鼠标指针样式效果

取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize |
收藏 0 赞 0 分享

css 简单区别ie6,ie7,firefox的写法

同一样式里可以这样 [code] margin:17px; FF +margin:17px; IE6 IE7 _margin:17px; IE6 [/code] 按这个顺序,刚好区分开三个浏览器
收藏 0 赞 0 分享
查看更多