summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/CSS2/tables/fixed-table-layout-003e08.xht
blob: 30c7faa3c51ead19fde576be63a89ffc53baa1e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

 <head>

  <title>CSS Test: table-layout: fixed - cell in the first row with specified width</title>

  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
  <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" />
  <link rel="bookmark" href="http://lists.w3.org/Archives/Public/www-style/2011Oct/0502.html" title="[css21] Section 17.5.2.1 should be clarified" />
  <link rel="match" href="fixed-table-layout-003e08-ref.xht" />

  <meta name="assert" content="A cell in the first row with specified non-auto 'width' sets the width for its column in the absence of a column element with specified non-auto width. This test checks the 'border-collapse: collapse' model with non-zero symetrical horizontal cell padding and with one non-zero horizontal cell borders." />

  <style type="text/css"><![CDATA[
  div, table {font: 1.25em/1.2 serif;}

  table
  {
  border-collapse: collapse;
  table-layout: fixed;
  width: 300px;
  }

  td {padding: 0px 24px;}

  td#tested-cell
  {
  background-color: blue;
  border-left: orange solid 72px;
  border-right: orange solid 0px;
  color: blue;
  width: 80px;
  }

  div#reference
  {
  background-color: black;
  color: black;
  margin-left: 32px;

  /*

  "
  In the fixed table layout algorithm, the width of each column is determined as follows:

  (...) a cell in the first row with a value other than 'auto' for the 'width' property determines the width for that column. (...)
    Any remaining columns equally divide the remaining horizontal table space (minus borders or cell spacing).
  "
  Section 17.5.2.1 Fixed table layout
  http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout


  Middle column width calculations
  --------------------------------

   36px : half of border-left since such border must be split with cell in 1st column
 +
   24px : padding-left of the cell in the middle column
 +
   80px : width of the cell in the middle column
 +
   24px : padding-right of the cell in the middle column

  =======
  164px : width of the middle column


  So,
      300px : table set width
    -
      164px : width of the middle column
      ======
      136px

      So, each of the 2 remaining columns must be
      half of such extra horizontal table space,
      which is 136px divided by 2 == 68px.

  1st column width calculations
  -----------------------------

    24px    : padding-left of cell in 1st column
  +
    (solve) : width of cell in 1st column
  +
    24px    : padding-right of cell in 1st column
  +
    36px    : border-right of cell in 1st column
              which is half of border-left of cell in middle column
   ======
    68px    : width of 1st column

  So, the width of the cell in first column must be exactly -16px !


  3rd column width calculations
  -----------------------------

    24px    : padding-left of cell in 3rd column
  +
    (solve) : width of cell in 3rd column
  +
    24px    : padding-right of cell in 3rd column
   =======
    68px    : width of 3rd column

   So, the width of the cell in 3rd column must be exactly 20px.


  Finally, the precise horizontal point where the border-right of cell
  in first column begins to be drawn, painted is:

    24px    : padding left of cell in 1st column
  +
    -16px    : width of cell in 1st column
  +
    24px    : padding right of cell in 1st column
  =======
    32px

  Therefore the margin-left: 32px value of the div#reference.

  */

  width: 200px;
  }
  ]]></style>

 </head>

 <body>

  <p>Test passes if the orange stripe and blue stripe are as a whole <strong>exactly as wide as</strong> the black stripe.</p>

  <table>

   <col />
   <col />
   <col />

   <tr>
    <td></td>
    <td id="tested-cell">E08</td>
    <td></td>
   </tr>

  </table>

  <div id="reference">200px wide</div>

 </body>
</html>