婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 標準化——表格

標準化——表格

熱門標簽:石家莊電話機器人電話 400電話辦理安徽 江西防封卡外呼系統怎么安裝 電銷智能機器人靠譜么 南通電話外呼系統開發 電銷機器人的宣傳語 沸思外呼線路 北京銷售外呼系統線路 南寧外呼電銷系統招商

對于那些剛接觸CSS布局的人來說,常對如何使用表格(table)感到迷惑。我在很多地方看到人們把“避免用表格來布局”理解成“完全不使用table標簽”。值得注意的是,表格是可以用的而且非常好用——只要用的正確。

是的,你得盡量的去避免用表格來布局。但是對于表格型數據,你就應該使用table。我想談談如何使用表格來組織表現表格型數據。在HTML和XHTML里,表格不僅僅是行(row)和單元格(cell),還有很多其他元素,特別是如果你想讓數據更加容易理解。

首先來點背景知識,“避免用表格來布局”這句話可以在HTML 4.01 規范表格介紹部分里面找到:

表格不應該純粹的被用來布局文檔內容,這樣可能在處理渲染非可視媒體的時候產生問題。另外,當和圖片一起使用的時候,這些表格可能在某個系統上顯示過大而強迫用戶拖動水平滾動條,為了減少這些問題,設計者應該使用樣式表來控制布局而不是表格。

這樣已經很明白了,盡管文檔中說“應該”而不是“必須”,所以這個規范還是有彈性的。

但是本文并不是討論是否使用表格布局,而是使用表格來組織表現表格型數據——這是表格誕生的本意。

當表格用來組織實際的數據時,不僅僅是一個編排布局的格子而已。一般人可以從表格的編排和表現上看出標題和數據單元格之間的關系。盲人或者有視覺障礙的人則不能做到這一點。如果一個表格要讓那些使用屏幕閱讀器或用其他非可視用戶代理(UA)的人們能夠理解,它則需要告訴用戶代理它包含的信息之間是如何聯系起來的。

幸運的是,HTML在這方面提供了很多元素和屬性。然而,使用這些可以增強易用性和語義化的功能比較難而且本身不容易理解。在本文中,我嘗試著解釋如何使用他們。

表頭, th>

讓我們從一個非常簡單的表格開始——只包含一行表頭和兩行三列的數據。如果用以前流行的做法,只用表格的行和單元格,寫出來就如下:

  1. table>
  2. tr>
  3. td>公司/td>
  4. td>雇員/td>
  5. td>成立于/td>
  6. /tr>
  7. tr>
  8. td>ACME Inc/td>
  9. td>1000/td>
  10. td>1947/td>
  11. /tr>
  12. tr>
  13. td>XYZ Corp/td>
  14. td>2000/td>
  15. td>1973/td>
  16. /tr>
  17. /table>

沒有邊框和修飾,那么上面的代碼在你現在的瀏覽器里看起來就如下:

公司 雇員 成立于
ACME Inc 1000 1947
XYZ Corp 2000 1973

用CSS稍微修飾一下表格,你可以使表頭在圖形化瀏覽器里面更加明顯:

公司 雇員 成立于
ACME Inc 1000 1947
XYZ Corp 2000 1973

一個視力正常的人,很容易并且很快就可以明白表頭和數據單元格之間的關系。從另一方面講,那些使用屏幕閱讀器的人可以聽到如下順序的詞:公司,雇員,成立于,ACME Inc,1000,1947,XYZ Corp,2000,1973。不是十分容易明白其中的關系。

第一步——最簡單的——通過適當的標出表頭來使得表格更加有意義。很簡單:只要使用th>標簽取代表頭的td>標簽即可。

  1. table>
  2. tr>
  3. th>公司/th>
  4. th>雇員/th>
  5. th>成立于/th>
  6. /tr>
  7. tr>
  8. td>ACME Inc/td>
  9. td>1000/td>
  10. td>1947/td>
  11. /tr>
  12. tr>
  13. td>XYZ Corp/td>
  14. td>2000/td>
  15. td>1973/td>
  16. /tr>
  17. /table>
公司 雇員 成立于
ACME Inc 1000 1947
XYZ Corp 2000 1973

這個例子雖然簡單,但是已經包含了足夠的信息使得屏幕閱讀器能夠讓使用者明白表頭和數據單元格之間的關系。一個屏幕閱讀器一般會這么讀:公司: ACME Inc. ,雇員: 1000,成立于: 1947., 以此類推。比之前好多了。

表格標題, caption>

caption>標簽可以為表格提供一個簡短的說明,和圖像的說明比較類似。默認情況下,大部分可視化瀏覽器顯示表格標題在表格的上方中央。CSS里的caption-side屬性用來控制表格標題顯示的地方。大部分瀏覽器只能把表格標題顯示在表格的上方或者下方,只有一些瀏覽器支持左邊或者右邊。這個就留給大家去試試了。

使用的時候,caption>標簽一定要緊接著開始的table>標簽寫,如下:

  1. table>
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. th>Company/th>
  5. th>Employees/th>
  6. th>Founded/th>
  7. /tr>
  8. tr>
  9. td>ACME Inc/td>
  10. td>1000/td>
  11. td>1947/td>
  12. /tr>
  13. tr>
  14. td>XYZ Corp/td>
  15. td>2000/td>
  16. td>1973/td>
  17. /tr>
  18. /table>
Table 1: Company data
Company Employees Founded
ACME Inc 1000 1947
XYZ Corp 2000 1973

當然你也可以用CSS去樣式化表格標題。然而,要在不同瀏覽器里獲得同樣的效果還需要一定的技巧,這個也留給各位去實踐了。

表格釋義:summary屬性

一般人可以很容易的決定是否研究一下表格的細節,只要瞥一眼就可以看出表格有多大、大概有什么內容。但是使用屏幕閱讀器的人就不是那么容易了,除非我們給表格加上summary屬性。這樣可以提供比caption>標簽更詳細的描述。

sumary屬性的內容不會被可視化瀏覽器顯示,所以可以盡可能的讓描述足夠長,使得那些用“聽”的瀏覽者了解表格的內容。當然也不要用過頭了,當有需要的時候才加上summary屬性,比如對于很復雜的表格,添加一個summary屬性可以使用屏幕閱讀器人比較簡單的了解表格的內容。

  1. table summary="The number of employees and the foundation year of some imaginary companies.">
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. th>Company/th>
  5. th>Employees/th>
  6. th>Founded/th>
  7. /tr>
  8. tr>
  9. td>ACME Inc/td>
  10. td>1000/td>
  11. td>1947/td>
  12. /tr>
  13. tr>
  14. td>XYZ Corp/td>
  15. td>2000/td>
  16. td>1973/td>
  17. /tr>
  18. /table>

縮寫表頭:abbr屬性

當屏幕閱讀器遇到一個表格,每一行會把表頭連每一個數據單元格一起讀出來。如果表頭很長,聽一遍一遍的讀是十分乏味的。通過使用abbr屬性,可以給那些長的表頭提供簡寫形式,取代表頭的內容。abbr屬性是可選的,大部分情況表頭還是(或許是應該)比較簡短的。

稍微修改一下剛才的表格,讓表頭更長些,abbr屬性就可以這樣用:

  1. table summary="The number of employees and the foundation year of some imaginary companies.">
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. th abbr="Company">Company Name/th>
  5. th abbr="Employees">Number of Employees/th>
  6. th abbr="Founded">Foundation Year/th>
  7. /tr>
  8. tr>
  9. td>ACME Inc/td>
  10. td>1000/td>
  11. td>1947/td>
  12. /tr>
  13. tr>
  14. td>XYZ Corp/td>
  15. td>2000/td>
  16. td>1973/td>
  17. /tr>
  18. /table>
Table 1: Company data
Company Name Number of Employees Foundation Year
ACME Inc 1000 1947
XYZ Corp 2000 1973

對于第一行數據,屏幕閱讀器會讀表頭的全稱,而從第二行開始即使用簡稱。

這樣讓數據表格適應布局是挺困難的,而以下的做法更為常見:即讓表頭盡可能的短,或者簡寫,使用title屬性或者abbr>標簽提供一個更長的說明。

把表頭和數據聯系起來:scopeidheaders屬性

就我用到現在,很多表格要比上面提供的例子復雜的多。讓例子復雜一點,我會移去“Company”表頭,并且把第一列的數據移到表頭單元格里:

  1. table summary="The number of employees and the foundation year of some imaginary companies.">
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. td>/td>
  5. th>Employees/th>
  6. th>Founded/th>
  7. /tr>
  8. tr>
  9. th>ACME Inc/th>
  10. td>1000/td>
  11. td>1947/td>
  12. /tr>
  13. tr>
  14. th>XYZ Corp/th>
  15. td>2000/td>
  16. td>1973/td>
  17. /tr>
  18. /table>
Table 1: Company data
  Employees Founded
ACME Inc 1000 1947
XYZ Corp 2000 1973

在這個表格里,每一個數據單元格都有兩個表頭。最簡單的方法讓那些非可視的瀏覽器理解這個表格,就是為每個表頭添加一個scope屬性。

  1. table summary="The number of employees and the foundation year of some imaginary companies.">
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. td>/td>
  5. th scope="col">Employees/th>
  6. th scope="col">Founded/th>
  7. /tr>
  8. tr>
  9. th scope="row">ACME Inc/th>
  10. td>1000/td>
  11. td>1947/td>
  12. /tr>
  13. tr>
  14. th scope="row">XYZ Corp/th>
  15. td>2000/td>
  16. td>1973/td>
  17. /tr>
  18. /table>

Scope屬性同時定義了行的表頭和列的表頭:

  • col: 列表頭
  • row: 行表頭

在第一行的 加上值為colscope屬性,聲明他們是下面數據單元格的表頭。同樣的,給每行的開頭th>加上值為rowscope屬性聲明他們是右邊數據單元格的表頭。

Scope屬性還有兩個值:

  • colgroup: 定義列組(column group)的表頭信息
  • rowgroup: 定義行組(row group)的表頭信息

一個列組是由colgroup>標簽定義的。行組則是由thead>tfoot>tbody>定義的。稍后我將會詳細介紹它們。

如果你既想要保留“Company”表頭,而又想讓公司名字作為行表頭(row headers)顯示,你會怎么做?那樣的話,應該使得包含公司名字的單元格同時提供表頭和數據信息。也就是說,td>標簽也應該加上scope屬性:

  1. table summary="The number of employees and the foundation year of some imaginary companies.">
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. th scope="col">Company/th>
  5. th scope="col">Employees/th>
  6. th scope="col">Founded/th>
  7. /tr>
  8. tr>
  9. td scope="row">ACME Inc/td>
  10. td>1000/td>
  11. td>1947/td>
  12. /tr>
  13. tr>
  14. td scope="row">XYZ Corp/td>
  15. td>2000/td>
  16. td>1973/td>
  17. /tr>
  18. /table>

這樣的話可視化瀏覽器不會默認的把company name顯示為表頭。所以需要用CSS來修正一下,就剛才那個例子,我使用了下面的CSS:

  1. td[scope] {
  2. font-weight:bold;
  3. }

要注意上面的規則使用了屬性選擇符,IE是不支持的。而通過添加一個class來樣式化表頭是個不錯的辦法。

Table 1: Company data
Company Employees Founded
ACME Inc 1000 1947
XYZ Corp 2000 1973

另一個連接表格數據單元格和表頭的方法就是給每一個表頭添加一個唯一的ID。然后為下面的數據單元格添加headers屬性,這個headers屬性值包含用空格分開的各個ID,這些ID代表的表頭各自關聯到該數據單元格上。這樣做很復雜,只是當有超過兩個表頭的單元格才用。在復雜的和不規則的表格中,scope屬性就力不從心了。

為了演示,我修改了一下表格,加上了公司雇員性別及人數:

  1. table class="extbl" summary="The number of employees and the foundation year of some imaginary companies.">
  2. caption>Table 1: Company data/caption>
  3. tr>
  4. td rowspan="2">/td>
  5. th id="employees" colspan="2">Employees/th>
  6. th id="founded" rowspan="2">Founded/th>
  7. /tr>
  8. tr>
  9. th id="men">Men/th>
  10. th id="women">Women/th>
  11. /tr>
  12. tr>
  13. th id="acme">ACME Inc/th>
  14. td headers="acme employees men">700/td>
  15. td headers="acme employees women">300/td>
  16. td headers="acme founded">1947/td>
  17. /tr>
  18. tr>
  19. th id="xyz">XYZ Corp/th>
  20. td headers="xyz employees men">1200/td>
  21. td headers="xyz employees women">800/td>
  22. td headers="xyz founded">1973/td>
  23. /tr>
  24. /table>
Table 1: Company data
  Employees Founded
Men Women
ACME Inc 700 300 1947
XYZ Corp 1200 800 1973

你可以發現,這種方法真的很麻煩,所以如果可能的話,還是盡量用scope屬性吧。

跨行和跨列

在以前用表格布局的年代,rowspan屬性和colspan屬性常被用來讓單元格跨幾列或跨幾行,來布局那些經過整齊切割的圖像。這兩個屬性現在還在用, 因為并沒有CSS來控制單元格的跨行和跨列。仔細想想,其實是很有道理的:跨行和跨列示表格結構(structure)的一部分,而不是其表現(presentation)。

列和列組:col>colgroup>

HTML提供了colgroup>col>標簽來為相關的表格列分組。這樣就可以(在一些瀏覽器中)使用CSS來單獨的為列樣式化。列組也可以使用scope屬性來標明其表頭信息。

這就是我要說的關于列和列組的全部。更多信息參考“其他”部分。

行組: thead>, tfoot>, 和tbody>

表格的行可以分組為表頭組(thead>), 表尾(或表注)組(tfoot>), 然后是一個或多個表身(tbody>) 。每一個行組必須包含一個或多個表格行。

如果一個表格包含thead>,那么它必須出現在tfoot>tbody>之前。而tfoot>則必須出現在tbody>之前。如果沒有使用thead>tfoot>,那么tbody>標簽也可以不加(也不是非得不加,隨你喜歡了)。一個有行組的表格結構看起來如下:

  1. table>
  2. thead>
  3. tr>/tr>
  4. … 更多表頭的行
  5. /thead>
  6. tfoot>
  7. tr>/tr>
  8. … 更多表尾的行
  9. /tfoot>
  10. tbody>
  11. tr>/tr>
  12. … 第一個tbody>的行
  13. /tbody>
  14. tbody>
  15. tr>/tr>
  16. … 第二個tbody>的行
  17. /tbody>
  18. … 更多的tbody>
  19. /table>

使用行組有以下幾個原因:

  • 這樣樣式化表頭、表尾和表身比較方便,而且獨立,不必要給每個標簽加樣式或class。
  • 當打印比較長的表格的時候,一些瀏覽器(比如基于Mozilla的)會在每一頁的開頭重復表頭和表尾的內容,這樣閱讀打印版本的表格就比較方便。
  • 區分開表頭和表尾也可以使一些瀏覽器瀏覽表格的時候,只滾動表身。

僅為數據表格而寫

本文所寫的所有都是關于使用HTML表格來組織和表現數據。如果你還是想用表格來布局,那么上文所述的都沒有意義而且用不到。沒有summary屬性、沒有表頭、沒有caption>、什么都沒有,沒有格式,陳舊的布局表格除了table>,tr>,td>什么都可以不要。另外還要承擔風險,即如何面對那些非可視的用戶代理(UA)。

優勢

看來要用HTML做一個有語義化的數據表格有很多工作。對于復雜的表格是這樣的。有時候基本上是不可能手工寫出來的。但是對于簡單的表格,那么使用一個th>加上scope屬性就可以了,又快又簡單。

非常明顯,語義化的表格對于使用屏幕閱讀器或其他輔助技術的瀏覽者非常有好處。讓那些巨大而復雜的表格“聽”起來很有意義是非常困難的,所以盡可能的使表格簡單。

另外對于使用可視化瀏覽器的設計者和用戶也是有好處的:一個語義化的表格有大量的接口可以利用CSS來樣式化,好的樣式可以讓表格更加易用。

其他

除了本文,還有更多關于數據表格內容。比如這里就沒有提到axis屬性,并且對于colgroup>col>的描述也不是很深。對于格式化和樣式化還有border模型我也沒有深究,還缺少一個真正復雜的表格的例子。

想了解更多信息,可以參考以下文章:

  • Tables in HTML documents
  • CSS formatting of tables
  • Techniques for Accessible HTML Tables
  • Building accessible websites: Tables and frames
  • A table, s'il vous plaît

標簽:陽泉 鹽城 衢州 寧夏 來賓 云南 晉中 北海

巨人網絡通訊聲明:本文標題《標準化——表格》,本文關鍵詞  標準化,表格,標準化,表格,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《標準化——表格》相關的同類信息!
  • 本頁收集關于標準化——表格的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91影视在线播放| 午夜精品福利在线| 中文字幕精品—区二区四季| 亚洲高清免费观看| 欧美系列在线观看| 国产精品免费看片| 中文字幕中文字幕一区| 一区二区三区四区不卡在线 | 欧美激情综合五月色丁香| 奇米四色…亚洲| 欧美成人性福生活免费看| 琪琪久久久久日韩精品| 久久久久久久久免费| 国产一区美女在线| 久久久久高清精品| 不卡的电影网站| 婷婷国产在线综合| 国产一区二区三区在线观看免费视频| 麻豆成人91精品二区三区| 国产精品一区不卡| 久久久国产午夜精品| 亚洲成av人片一区二区| 精品国产乱码久久久久久图片| 欧美aaaaaa午夜精品| 国产精品美女www爽爽爽| 色婷婷av一区二区三区软件| 奇米在线7777在线精品| 亚洲欧美自拍偷拍色图| 欧美videos大乳护士334| 成人免费观看av| 日韩av电影免费观看高清完整版| 国产精品美女久久久久久久网站| 欧美一区日本一区韩国一区| 99久久精品国产麻豆演员表| 美腿丝袜一区二区三区| 樱花影视一区二区| 中文字幕欧美国产| 欧美一级日韩一级| 在线亚洲一区二区| 国产成人在线网站| 午夜精品久久久久影视| 中文一区二区完整视频在线观看| 欧美一区二区在线视频| 色天天综合色天天久久| 成人午夜免费视频| 国产精品一区二区三区乱码| 日本va欧美va精品发布| 欧美国产成人在线| 国产一区二区三区免费在线观看| 欧美一区二区视频在线观看2020| 国产成人h网站| 亚洲午夜成aⅴ人片| 中文字幕日韩一区| 中文字幕在线不卡视频| 久久久亚洲午夜电影| 欧美成人一区二区三区| 欧美刺激脚交jootjob| 欧美一区二区福利在线| 欧美一级日韩不卡播放免费| 欧美日韩国产首页| 91精品国产色综合久久久蜜香臀| 欧美日韩视频不卡| 欧美日韩高清一区二区| 欧美理论电影在线| 日韩一区二区三区视频在线| 欧美人与性动xxxx| 在线综合+亚洲+欧美中文字幕| 欧美三级日韩三级国产三级| 欧美三级电影在线观看| 777亚洲妇女| 精品久久久久久久久久久院品网| 欧美成人aa大片| 久久这里只有精品视频网| 国产人久久人人人人爽| 亚洲色图在线播放| 一区二区三区在线视频播放| 亚洲在线成人精品| 日韩精品一区第一页| 久久国产剧场电影| 国产**成人网毛片九色 | 亚洲欧美日韩国产中文在线| 国产在线麻豆精品观看| 日韩限制级电影在线观看| 亚洲一区二区高清| 日本久久一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 国产激情视频一区二区三区欧美| 欧美大片一区二区三区| 日韩av不卡在线观看| 在线成人免费视频| 午夜亚洲福利老司机| 色婷婷狠狠综合| 欧美日韩亚洲综合在线| 国产午夜亚洲精品不卡 | 亚洲精品写真福利| 午夜免费久久看| 国产高清在线精品| 欧美在线免费观看视频| 久久蜜桃香蕉精品一区二区三区| 亚洲人成网站色在线观看| 亚洲精品成人在线| 国内成人自拍视频| 欧美日韩综合一区| 国产精品国产精品国产专区不蜜| 亚洲国产精品自拍| 国产91精品露脸国语对白| 7777精品伊人久久久大香线蕉最新版| 国产欧美日韩麻豆91| 男男视频亚洲欧美| 色综合中文字幕国产 | 欧美久久免费观看| 26uuu国产日韩综合| 亚洲国产综合人成综合网站| 国产精品1区2区3区在线观看| 欧美视频一区在线| 国产精品进线69影院| 韩国成人在线视频| 91麻豆精品国产91久久久久久久久 | 91精品国产综合久久蜜臀| 国产精品久久久久永久免费观看| 蜜臀久久久99精品久久久久久| 欧美在线高清视频| 亚洲欧美视频在线观看视频| 风间由美性色一区二区三区| 精品久久久三级丝袜| 婷婷六月综合亚洲| 欧美男男青年gay1069videost| 亚洲精品日产精品乱码不卡| 99在线视频精品| 中文字幕第一区二区| 国产一区 二区 三区一级| 日韩一卡二卡三卡国产欧美| 人禽交欧美网站| 欧美一级午夜免费电影| 蜜桃精品视频在线观看| 精品国免费一区二区三区| 久久成人免费日本黄色| 久久综合九色综合欧美98| 国产精选一区二区三区| 国产欧美一区二区三区在线看蜜臀| 国产一区二区精品在线观看| 中文在线资源观看网站视频免费不卡| 国产福利精品导航| 国产欧美久久久精品影院| 99视频精品在线| 亚洲欧美一区二区三区极速播放| 99视频超级精品| 亚洲精品ww久久久久久p站| 色一区在线观看| 亚洲福利视频三区| 91精品在线一区二区| 国产乱码字幕精品高清av| 国产亚洲人成网站| 色久综合一二码| 亚洲国产精品欧美一二99| 欧美一区二区三区精品| 国产成人av电影免费在线观看| 中文字幕一区二区三区蜜月| 欧美午夜在线一二页| 久久99精品网久久| 国产精品乱码一区二区三区软件 | 欧美激情一区在线| 色综合天天综合色综合av| 天堂一区二区在线| 久久精品无码一区二区三区| 91在线丨porny丨国产| 日韩**一区毛片| 国产精品久久久久久久久动漫 | 国产偷v国产偷v亚洲高清| 色婷婷精品久久二区二区蜜臂av | 一本大道久久a久久精品综合| 亚洲国产中文字幕| 久久精品日产第一区二区三区高清版 | 亚洲自拍偷拍麻豆| 欧美成人免费网站| 日本乱码高清不卡字幕| 国内久久精品视频| 亚洲午夜在线视频| 国产视频一区二区在线| 欧美三区在线观看| www.综合网.com| 国产综合色视频| 日韩主播视频在线| 亚洲色图第一区| 久久久久久久久久久黄色| 欧美久久久久久久久中文字幕| jlzzjlzz亚洲日本少妇| 精品一区二区在线看| 亚洲午夜精品网| 亚洲乱码中文字幕| 国产精品初高中害羞小美女文| 日韩欧美成人激情| 7777女厕盗摄久久久| 色999日韩国产欧美一区二区| 国产精品亚洲专一区二区三区| 奇米777欧美一区二区| 亚洲成av人片在线| 亚洲国产一区二区视频| 亚洲美女屁股眼交| 最新国产成人在线观看|