Click to See Complete Forum and Search --> : Table sizing, making cells perfect squares


voidvector
12-09-2008, 01:17 PM
I have a 10x10 table. Each cell contains a varying amount of data. The data in the cell is dynamic content (text).

My goal is to guarantee the dimensions of each of the cells such that 1) they are all the same, 2) they are all perfect squares, 3) they are unchanged once the page is loaded (even if content expands beyond it). I already have a JavaScript that reduce the font size of the content based on the amount of content.

How do I do this?

optimus203
12-09-2008, 10:48 PM
Try adding this to all the <td> tags. I think it should work, but will resize based on the browser window size. Have you tried specifying absolute sizes for each <td>, and then wrapping all the code in a container div?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
.equalRelative {width:10%; height:10%;}
.equalAbsolute {width:50px; height:50px;}
</style>

</head>

<body>
<table width="100%" border="1">
<tr>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
<td class="equalRelative">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

voidvector
12-10-2008, 03:38 AM
I got it mostly down, but I have to use a DIV inside the cell to make sure the cell size are correct and make sure to catch anything that overflows.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
table
{
padding: 0px;

border-collapse: collapse;
table-layout: fixed;

margin: auto;
}

td
{
height: 36px;
width: 36px;

border: 1px solid #000;
padding: 0px;

empty-cells: show;

}

td div
{
height: 36px;
width: 36px;
overflow: hidden;
}
</style>

</head>

<body>
<table>
<tr>
<td><div>tooo much content dafdasjfk;aldsfjasd;fjasl;dfhasdl;fhasdklfhadl</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

</tr>
<tr>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
</tr>
<tr>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
</tr>
<tr>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

</tr>
<tr>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
</tr>
<tr>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
</tr>
<tr>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

</tr>
<tr>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
</tr>
<tr>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>

<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
<td><div>&nbsp;</div></td>
</tr>
<tr>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>

<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>
<td style="border-top: 3px solid black;"><div>&nbsp;</div></td>

</tr>
</table>
</body>
</html>

P.S. A row of thick border is left in on purpose to make sure the cell size is not affected by the border.