回主页

笨活儿关注Web前端和网页设计,同时兼顾用户体验,致力于将国外的优秀教程汉化,并不定期推荐免费优秀影视娱乐资源。

订阅本博客。


  • About/关于
  • Browse/浏览
  • Portfolio/作品集
  • Search/搜索

TOPICS/主题:英国达人中文字幕 网页设计 免费资源 Web前端 感受年轻 边翻译边学习More...


  • « [译]JavaScript基础入门
  • 学习Web技术的基本原则 »
发表时间:十二月 7 ↓ 有话想说

用标准的CSS定义你的表格样式

由 慵云 发表于 前端开发 分类下  发表时间:星期五, 十二月 7, 2007 9:15

CSS标准化了的表格

原文链接:A CSS styled table version 2

本文介绍如何正确使用xHTML语言里的table标签——他应该只为展示数据所用。本文将帮助你赋予您的表格可达性,并教会你如何用CSS来定义你的表格以获得需要的视觉效果。

XHTML部分

如果你读过我关于表格问题的 第一篇文章,你可能还记得我建议你读一读Roger的 ‘Bring on the tables’ [表格全接触]。在这个问题上他的讨论的深度已达极致。不过,我还是想提醒您一些事情,在你想编写出拥有良好可达性的表格代码时请务必牢记这些原则:

  • 确保为表头[即某列或某行表格元素的标题,数据域标题。]使用 th元素并指定scope(范围)属性。[也就是使用类似<th scope="col">姓名</th>的代码]
  • 为你的表格添加标题(caption),特别是当你的页面有不止一个表格的时候。
  • 为表格元素添加summary(摘要)属性,清楚而简洁地描述表格内容
  • 如果需要,可以通过使用thead,tfoot,tbody元素将表格行分组,以获得结构更加清晰的表格。

A CSS styled table version 2

为什么要使用表头和指定scope属性?

这至少能带给你两个好处。第一,这会让你的表格对使用屏幕阅读器的人更可及。 第二,这样做能帮助你更容易地用CSS控制表格样式。你可以给所有的th 元素单独的CSS样式,让它们以不同于其他表格单元的样式显示。添加scope属性可以让使用屏幕阅读器的人更好的“听懂”表格。这样可以轻松地做到让表格头与相应的数据单元格相关联,不过如果表格中有两种表头:标识着一行数据的表头和标识着一列数据的表头,这个表格对于使用屏幕阅读器的人来说仍然是不易理解的。我们使用scope属性表示表头应该如何发挥作用,以及它们是如何与单元格里的数据相关联。

示范代码:

—————————————-

<table border="0">
<tbody>
<tr>
<td></td>
<th scope="col">Webhosting Home</th>
<th scope="col">Webhosting Home Plus</th>
</tr>
<tr>
<th scope="row">Data usage</th>
<td>1 GB per month</td>
<td>2 GB per month</td>
</tr>
</tbody></table>

—————————————-

什么时候使用表格头的abbr(缩写)属性

你也可以使用abbr属性为表格的可及性做更多。 当然,表头很长的时候这是非常值得一用的。

<table>
<tr>
<td></td>
<th scope="col" abbr="Home">Webhosting Home for limited usage</th>
<th scope="col" abbr="Home Plus">Webhosting Home Plus for more extended usage</th>
</tr>
...
</table>

为什么要添加标题?

标题(caption)为你的表格提供一个简单的描述。 对于使用屏幕阅读器的人来说这相当有用。它直接告诉用户这个表格是做什么用的。

<table>
<caption>Company X webhosting products overview</caption>
...
</table>

为何要添加简介(summary)?

对使用屏幕阅读器的人来说阅读表格是一件非常需要耐心的事,而有时候表格标题只能提供一小点提示。 在他们研究表格数据前给他们一些提示对他们来说会非常有用。 这能为他们节省很多时间。表格内容简介对他们自己花很多时间来读表格获得的信息有用得多。

  1. <table summary="Webhosting products overview showing all available packages, what's included and what the monthly cost is with an option to order">
  2. <caption>Company X webhosting products overview</caption>
  3. ...
  4. </table>

CSS部分

现在我们来谈谈表格样式和颜色。我这里有两个例子:

A CSS styled table version 2

  • 第一个例子 的单元格只改变了背景颜色而没有添加背景图片。
  • 第二个例子 使用了 背景图片

[这两个例子的颜色都不明显啊…… 仔细看才看得出差别]

为单元格添加样式

下面的代码中边框样式被加粗显示。border-collapse(边框合并)属性被定义成了collapse,这样就清除了单元格之间的间距。

  1. table {
  2. width:90%;
  3. border-top:1px solid #e5eff8;
  4. border-right:1px solid #e5eff8;
  5. margin:1em auto;
  6. border-collapse:collapse;
  7. }
  8. td {
  9. color:#678197;
  10. border-bottom:1px solid #e5eff8;
  11. border-left:1px solid #e5eff8;
  12. padding:.3em 1em;
  13. text-align:center;
  14. }

为表头添加样式

在下面的CSS代码中我用了一个类来定义单元格交替的颜色变换。不过你也可以 用一些简单的jacascript代码 实现这一效果,以避免添加这些额外的类,从而使代码特别特别的干净。我也为第一列添加了单独的样式,因为这一列需要有不同的样式效果和背景。

例子1的CSS代码
  1. tr.odd td {
  2. background:#f7fbff
  3. }
  4. tr.odd .column1 {
  5. background:#f4f9fe;
  6. }
  7. .column1 {
  8. background:#f9fcfe;
  9. }
例子2的CSS代码
  1. tr.odd td,
  2. tr.odd .column1 {
  3. background:#f4f9fe url(images/background.gif) no-repeat;
  4. }
  5. .column1 {
  6. background:#f9fcfe;
  7. }
定义thead和tfoot元素样式

我的表格顶部的表头添加了不同的样式:

  1. thead th {
  2. background:#f4f9fe;
  3. text-align:center;
  4. font:bold 1.2em/2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif;
  5. color:#66a3d3;
  6. }

对于表格底部的样式,我用strong标签重点强调了标题,用em标签强调了价格。

  1. tfoot th {
  2. background:#f4f9fe;
  3. text-align:center;
  4. }

下面的代码定义“真正”的表头的样式:

  1. tfoot th strong {
  2. font:bold 1.2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif;
  3. margin:.5em .5em .5em 0;
  4. color:#66a3d3;
  5. }

下面的代码定义显示价格的em元素的样式:

  1. tfoot th em {
  2. color:#f03b58;
  3. font-weight: bold;
  4. font-size: 1.1em;
  5. font-style: normal;
  6. }

背景图片的制作

在Photoshop里新建一个60乘200大小的图形文件,新建一个图层添加微妙的垂直渐变。 用浅蓝色做背景(这应该是和在CSS里将指定的背景色一样的颜色)并为高光部分选择一个更加明亮的蓝色。当单元格在垂直方向扩展时这个颜色将使背景不显得突兀。按住shift键从下向上拉一个渐变。

再建一个新图层, 选择画笔工具,确保其宽度为1像素。 同样是按住shift键,在图片最顶部和最左侧分别拉一条贯穿的直线。

好了,制作完成!希望您喜欢这个教程 :)

你应该也会喜欢:
  1. 40个实用的轻量级JavaScript库[SM]
  2. 即刻提升jQuery性能的十个技巧[TUTS+]
  3. 正则表达式高级技巧背后的关键概念[SM]

标签:CSS • Web标准 • XHTML • 教程

© 笨活儿   允许转载,但请以链接形式保留出处。也欢迎您使用RSS订阅本博客。

  • « [译]JavaScript基础入门
  • 学习Web技术的基本原则 »

感谢第一位留言的小朋友!

  1. fxpro ←@
    十二月 17, 2009 9:34 下午

    非常好,我正需要这个。。。呵呵,,

多说话有益身体健康

点击这里取消回复。

请勿发表“顶”、“好”、“很有用”之类对他人没有帮助的话。欢迎针对文章内容发表您自己的真知灼见。

点击人名后面的 ←@ 可以回复TA。如果已经超过回复层级,您可以在上一级回复,并记得加上“@称呼”以注明您回复的是谁。

您可以订阅本文的RSS供稿,及时了解大家的讨论进度。


唠唠叨叨:
  • 02月09日
     ktmud: @helloleo 因为他贵 
  • 02月09日
     ktmud: RT @junyu: Google 这个短信计费方式太搞笑了… http://t.co/wqEuO2bx 
  • 02月09日
     ktmud: @jeuxee 好嘛.... 这俩我都还没试过  请原谅刚用上iphone的土鳖 
  • 02月09日
     ktmud: @ohdarling88 谁回来了 
  • 02月08日
     ktmud: 那个叫zaker的应用做得真心不错啊~  http://t.co/k2dLsgmM 

follow me!


  • 日历 Calendar

    2012 年二月
    一二三四五六日
    « 十二  
     12345
    6789101112
    13141516171819
    20212223242526
    272829 
  • 分类文章 Categories

    • Web技术 (28)
      • 交互和UE (2)
      • 前端开发 (14)
      • 网页设计 (9)
    • 人微言轻 (20)
    • 外语笔记 (10)
      • 英语精译精析 (6)
    • 好康推荐 (16)
    • 娱乐至死 (54)
    • 生活琐碎 (52)
    • 设计丛谈 (5)
  • 有情博客 Blogroll

    • 个篱: 音乐媒体观察
    • 偶为“英音”狂
    • 奇技淫巧
    • 小苑
    • 岁月如歌
    • 明城
    • 暂不留名
  • 博客群落 MyBlogs

    • 一同堕落
    • 丘迟的维基
    • 千吨泥 – 前端技术
    • 千吨泥维基
    • 千吨瞎想
    • 超哥爱你

人人 | 豆瓣 | Last.Fm | Facebook | Google Reader | 百度 | 维基百科

© 笨活儿 2009

本站所有内容均可自由转载,但请遵循CC协议规定

Powered By WordPress, Original Theme by BenHuoer