table

CSSについて説明します。

display: tableについて説明します。

display: table

tableは、table wrapper boxをestablishします。
table wrapper boxは、table grid boxesの周りに生成されたblock boxです。

構造

W3Cの下記に構造を示す図があります。

17 Tables
CSS Table Module Level 3

それぞれに分解します。

display: table

tableタグと対応します。

test_007.css

  1. div.test-007-table
  2. {
  3. display: table;
  4. box-sizing: border-box;
  5. border-spacing: 2px;
  6. width: 100%;
  7. height: 400px;
  8. border: 1px solid #3399FFCC;
  9. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <div class="test-007-table"><div>
  5. </body>

表示は下記となります。

上記は下記と同様です。

  1. table.test-007-001
  2. {
  3. width: 100%;
  4. height: 400px;
  5. border: 1px solid #3399FFCC;
  6. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <table class="test-007-001"></table>
  5. </body>

display: table-column-group

colgroupタグと対応します。

test_007.css

  1. div.test-007-table
  2. {
  3. display: table;
  4. box-sizing: border-box;
  5. border-spacing: 2px;
  6. width: 100%;
  7. height: 400px;
  8. border: 1px solid #3399FFCC;
  9. }
  10. div.test-007-colgroup-blue
  11. {
  12. display: table-column-group;
  13. background-origin: padding-box;
  14. background: #3399FFCC;
  15. }
  16. div.test-007-col
  17. {
  18. display: table-column;
  19. }
  20. div.test-007-tr
  21. {
  22. display: table-row;
  23. }
  24. div.test-007-td
  25. {
  26. display: table-cell;
  27. margin: 2px;
  28. padding: 2px;
  29. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <div class="test-007-table">
  5. <div class="test-007-colgroup-blue">
  6. <div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div><div class="test-007-col"></div>
  7. </div>
  8. <div class="test-007-tr">
  9. <div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div>
  10. </div>
  11. </div>
  12. </body>

表示は下記となります。

上記は下記と同様です。

test_007.css

  1. table.test-007-001
  2. {
  3. width: 100%;
  4. height: 400px;
  5. border: 1px solid #3399FFCC;
  6. }
  7. colgroup.test-007-002
  8. {
  9. background: #3399FFCC;
  10. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <table class="test-007-001">
  5. <colgroup class="test-007-002">
  6. <col></col><col></col><col></col>
  7. </colgroup>
  8. <tr>
  9. <td></td><td></td><td></td>
  10. </tr>
  11. </table>
  12. </body>

display: table-column

colタグと対応します。

test_007.css

  1. div.test-007-table
  2. {
  3. display: table;
  4. box-sizing: border-box;
  5. border-spacing: 2px;
  6. width: 100%;
  7. height: 400px;
  8. border: 1px solid #3399FFCC;
  9. }
  10. div.test-007-colgroup
  11. {
  12. display: table-column-group;
  13. background-origin: padding-box;
  14. }
  15. div.test-007-col-blue:nth-child(odd)
  16. {
  17. display: table-column;
  18. background: #66CCFFCC;
  19. }
  20. div.test-007-col-blue:nth-child(even)
  21. {
  22. display: table-column;
  23. background: #3399FFCC;
  24. }
  25. div.test-007-tr
  26. {
  27. display: table-row;
  28. }
  29. div.test-007-td
  30. {
  31. display: table-cell;
  32. margin: 2px;
  33. padding: 2px;
  34. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <div class="test-007-table">
  5. <div class="test-007-colgroup">
  6. <div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div><div class="test-007-col-blue"></div>
  7. </div>
  8. <div class="test-007-tr">
  9. <div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div><div class="test-007-td"></div>
  10. </div>
  11. </div>
  12. </body>

表示は下記となります。

上記は下記と見た目は同様です。

test_007.css

  1. table.test-007-001
  2. {
  3. width: 100%;
  4. height: 400px;
  5. border: 1px solid #3399FFCC;
  6. }
  7. colgroup.test-007-002
  8. {
  9. background: #3399FFCC;
  10. }
  11. col.test-007-003
  12. {
  13. background: #66CCFFCC;
  14. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <table class="test-007-001">
  5. <colgroup class="test-007-002">
  6. <col class="test-007-003"></col><col></col><col class="test-007-003"></col>
  7. <colgroup>
  8. <tr>
  9. <td></td><td></td><td></td>
  10. </tr>
  11. </table>
  12. </body>

display: table-row-group

tbodyタグと対応します。

test_007.css

  1. div.test-007-table
  2. {
  3. display: table;
  4. box-sizing: border-box;
  5. border-spacing: 2px;
  6. width: 100%;
  7. height: 400px;
  8. border: 1px solid #3399FFCC;
  9. }
  10. div.test-007-tbody-blue
  11. {
  12. display: table-row-group;
  13. background: #3399FFCC;
  14. }
  15. div.test-007-tr
  16. {
  17. display: table-row;
  18. }
  19. div.test-007-td
  20. {
  21. display: table-cell;
  22. margin: 2px;
  23. padding: 2px;
  24. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <div class="test-007-table">
  5. <div class="test-007-tbody-blue">
  6. <div class="test-007-tr"><div class="test-007-td"></div></div>
  7. <div class="test-007-tr"><div class="test-007-td"></div></div>
  8. <div class="test-007-tr"><div class="test-007-td"></div></div>
  9. </div>
  10. </div>
  11. </body>

表示は下記となります。

上記は下記と同様です。

test_007.css

  1. table.test-007-001
  2. {
  3. width: 100%;
  4. height: 400px;
  5. border: 1px solid #3399FFCC;
  6. }
  7. tbody.test-007-004
  8. {
  9. background: #3399FFCC;
  10. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <table class="test-007-001">
  5. <tbody class="test-007-004">
  6. <tr><td></td></tr>
  7. <tr><td></td></tr>
  8. <tr><td></td></tr>
  9. </tbody>
  10. </table>
  11. </body>

display: table-row

trタグと対応します。

test_007.css

  1. div.test-007-table
  2. {
  3. display: table;
  4. box-sizing: border-box;
  5. border-spacing: 2px;
  6. width: 100%;
  7. height: 400px;
  8. border: 1px solid #3399FFCC;
  9. }
  10. div.test-007-tbody
  11. {
  12. display: table-row-group;
  13. }
  14. div.test-007-tr-blue:nth-child(odd)
  15. {
  16. display: table-row;
  17. background: #66CCFFCC;
  18. }
  19. div.test-007-tr-blue:nth-child(even)
  20. {
  21. display: table-row;
  22. background: #3399FFCC;
  23. }
  24. div.test-007-td
  25. {
  26. display: table-cell;
  27. margin: 2px;
  28. padding: 2px;
  29. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <div class="test-007-table">
  5. <div class="test-007-tbody">
  6. <div class="test-007-tr-blue"><div class="test-007-td"></div></div>
  7. <div class="test-007-tr-blue"><div class="test-007-td"></div></div>
  8. <div class="test-007-tr-blue"><div class="test-007-td"></div></div>
  9. </div>
  10. </div>
  11. </body>

表示は下記となります。

上記は下記と同様です。

test_007.css

  1. table.test-007-001
  2. {
  3. width: 100%;
  4. height: 400px;
  5. border: 1px solid #3399FFCC;
  6. }
  7. tr.test-007-005:nth-child(odd)
  8. {
  9. background: #66CCFFCC;
  10. }
  11. tr.test-007-005:nth-child(even)
  12. {
  13. background: #3399FFCC;
  14. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <table class="test-007-001">
  5. <tbody>
  6. <tr class="test-007-005"><td></td></tr>
  7. <tr class="test-007-005"><td></td></tr>
  8. <tr class="test-007-005"><td></td></tr>
  9. </tbody>
  10. </table>
  11. </body>

display: table-cell

tdタグ、thタグと対応します。

test_007.css

  1. div.test-007-table
  2. {
  3. display: table;
  4. box-sizing: border-box;
  5. border-spacing: 2px;
  6. width: 100%;
  7. height: 400px;
  8. border: 1px solid #3399FFCC;
  9. }
  10. div.test-007-tbody-blue-pattern
  11. {
  12. display: table-row-group;
  13. }
  14. div.test-007-tbody-blue-pattern .test-007-tr:nth-child(odd) .test-007-td:nth-child(odd)
  15. {
  16. background: #66CCFFCC;
  17. }
  18. div.test-007-tbody-blue-pattern .test-007-tr:nth-child(odd) .test-007-td:nth-child(even)
  19. {
  20. display: table-cell;
  21. background: #3399FFCC;
  22. }
  23. div.test-007-tbody-blue-pattern .test-007-tr:nth-child(even) .test-007-td:nth-child(odd)
  24. {
  25. display: table-cell;
  26. background: #3399FFCC;
  27. }
  28. div.test-007-tbody-blue-pattern .test-007-tr:nth-child(even) .test-007-td:nth-child(even)
  29. {
  30. display: table-cell;
  31. background: #66CCFFCC;
  32. }
  33. /*
  34. div.test-007-tbody-blue-pattern .test-007-tr:nth-child(1n) .test-007-td:nth-child(3n)
  35. {
  36. background: #66CCFFCC;
  37. }
  38. */
  39. div.test-007-tr
  40. {
  41. display: table-row;
  42. }
  43. div.test-007-td
  44. {
  45. display: table-cell;
  46. margin: 2px;
  47. padding: 2px;
  48. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <div class="test-007-table">
  5. <div class="test-007-tbody-blue-pattern">
  6. <div class="test-007-tr">
  7. <div class="test-007-td"></div>
  8. <div class="test-007-td"></div>
  9. <div class="test-007-td"></div>
  10. <div class="test-007-td"></div>
  11. <div class="test-007-td"></div>
  12. <div class="test-007-td"></div>
  13. <div class="test-007-td"></div>
  14. <div class="test-007-td"></div>
  15. <div class="test-007-td"></div>
  16. </div>
  17. <div class="test-007-tr">
  18. <div class="test-007-td"></div>
  19. <div class="test-007-td"></div>
  20. <div class="test-007-td"></div>
  21. <div class="test-007-td"></div>
  22. <div class="test-007-td"></div>
  23. <div class="test-007-td"></div>
  24. <div class="test-007-td"></div>
  25. <div class="test-007-td"></div>
  26. <div class="test-007-td"></div>
  27. </div>
  28. <div class="test-007-tr">
  29. <div class="test-007-td"></div>
  30. <div class="test-007-td"></div>
  31. <div class="test-007-td"></div>
  32. <div class="test-007-td"></div>
  33. <div class="test-007-td"></div>
  34. <div class="test-007-td"></div>
  35. <div class="test-007-td"></div>
  36. <div class="test-007-td"></div>
  37. <div class="test-007-td"></div>
  38. </div>
  39. </div>
  40. </div>
  41. </body>

表示は下記となります。

上記は下記と同様です。

test_007.css

  1. table.test-007-001
  2. {
  3. width: 100%;
  4. height: 400px;
  5. border: 1px solid #3399FFCC;
  6. }
  7. tbody.test-007-007 tr:nth-child(odd) td:nth-child(odd)
  8. {
  9. background: #66CCFFCC;
  10. }
  11. tbody.test-007-007 tr:nth-child(odd) td:nth-child(even)
  12. {
  13. background: #3399FFCC;
  14. }
  15. tbody.test-007-007 tr:nth-child(even) td:nth-child(odd)
  16. {
  17. background: #3399FFCC;
  18. }
  19. tbody.test-007-007 tr:nth-child(even) td:nth-child(even)
  20. {
  21. background: #66CCFFCC;
  22. }

test_007.html

  1. <!DOCTYPE html>
  2. <head><link rel="stylesheet" type="text/css" href="./test_007.css"/></head>
  3. <body>
  4. <table class="test-007-001">
  5. <tbody class="test-007-007">
  6. <tr>
  7. <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
  8. </tr>
  9. <tr>
  10. <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
  11. </tr>
  12. <tr>
  13. <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
  14. </tr>
  15. </tbody>
  16. </table>
  17. </body>

まとめ

お疲れ様です。

headerとfooterとcaptionについての説明は省略しています。

参考

17 Tables
CSS Table Module Level 3
<display-internal>

参考 & 広告

Kindle版です。
紙の本と、PDF版があります。
Kindle版です。
電子書籍です。




«       »
カテゴリーCSS