Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>CSS Test: table-layout fixed - columns with percentage width and absolute 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" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-023-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated, predicted, rendered." name="assert" />
<style type="text/css"><![CDATA[
body
{
margin: 8px;
width: 640px;
}
table, div {font: 1.25em/1 Ahem;}
table
{
border: white solid;
border-width: 0px 11px; /* horizontal table border width is 22px total */
border-collapse: separate;
border-spacing: 18px 4px; /* horizontal border-spacing width is 90px total */
table-layout: fixed;
width: 80%; /* 640px mult by 80% == 512px */
/*
"With this (fast) algorithm, the horizontal layout of
the table does not depend on the contents of the cells;
it only depends on the table's width, the width of
the columns, and [table] borders or cell spacing."
So,
512px : total table width
-
90px : total horizontal border-spacing width
-
22px : total horizontal border-spacing width
========
400px : total to split among the 4 columns
*/
}
col#first
{
background-color: fuchsia;
width: 13%;
/* 400px multiplied by 13% = 52px */
}
col#second
{
background-color: olive;
width: 100px;
}
col#third
{
background-color: orange;
width: 31%;
/* 400px multiplied by 31% = 124px */
/*
400px - (52px + 100px + 124px) = 124px for last column
*/
}
col#fourth {background-color: lime;}
td {padding: 1px 10px;}
td#first-cell {color: fuchsia;}
td#second-cell {color: olive;}
td#third-cell {color: orange;}
td#fourth-cell {color: lime;}
div {padding: 1px 0px;}
div#reference1st
{
background-color: fuchsia;
color: fuchsia;
left: 29px; /* 11px border-left of table + 18px border-spacing == 29px */
position: relative;
width: 52px;
}
div#reference2nd
{
background-color: olive;
bottom: 1.1em;
color: olive;
left: 99px;
/*
11px : border-left of table
+
18px : 1st border-spacing
+
52px : width of first column
+
18px : 2nd border-spacing
=======
99px
*/
position: relative;
width: 100px;
}
div#reference3rd
{
background-color: orange;
bottom: 2.2em;
color: orange;
left: 217px;
/*
11px : border-left of table
+
18px : 1st border-spacing
+
52px : width of first column
+
18px : 2nd border-spacing
+
100px : width of second column
+
18px : 3rd border-spacing
=======
217px
*/
position: relative;
width: 124px;
}
div#reference4th
{
background-color: lime;
bottom: 3.3em;
color: lime;
left: 359px;
/*
11px : border-left of table
+
18px : 1st border-spacing
+
52px : width of first column
+
18px : 2nd border-spacing
+
100px : width of second column
+
18px : 3rd border-spacing
+
124px : width of third column
+
18px : 4th border-spacing
=======
359px
*/
position: relative;
width: 124px;
}
]]></style>
</head>
<body>
<p>Test passes if the colored (fuchsia, olive, orange and lime) stripes have respectively the same widths and the same horizontal positions.</p>
<table>
<col id="first"></col>
<col id="second"></col>
<col id="third"></col>
<col id="fourth"></col>
<tr>
<td id="first-cell">1</td>
<td id="second-cell">2</td>
<td id="third-cell">3</td>
<td id="fourth-cell">4</td>
</tr>
</table>
<div id="reference1st">r</div>
<div id="reference2nd">r</div>
<div id="reference3rd">r</div>
<div id="reference4th">r</div>
</body>
</html>