IE 8 macht etwas sehr merkwürdig, wenn ich eine Spalte in einer Tabelle mit Tabellenlayout verstecke: behoben. Die Spalte ist ausgeblendet, das Tabellenelement bleibt gleich breit, aber die tbody- und thead-Elemente werden nicht so skaliert, dass sie die verbleibende Breite ausfüllen. Es funktioniert im IE7-Modus (und FF, Chrome, etc. natürlich). Hat jemand das schon einmal gesehen oder kennt einen Workaround?IE8 wird die Größe von tbody oder thead nicht ändern, wenn eine Spalte in einer Tabelle mit Tabellenlayout ausgeblendet ist: fixed
Hier ist meine Testseite - die erste Spalte wechseln und die Entwickler-Konsole verwenden, um die Tabelle, tbody und thead Breite zu überprüfen:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>bug</title>
<style type="text/css">
table {
table-layout:fixed;
width:100%;
border-collapse:collapse;
}
td, th {
border:1px solid #000;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th id="target1">1</th>
<th>2</th>
<th>3</th>
<th>4</th>
</tr>
</thead>
<tbody>
<tr>
<td id="target2">1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</tbody>
</table>
<a href="#" id="toggle">toggle first column</a>
<script type="text/javascript">
function toggleFirstColumn() {
if (document.getElementById('target1').style.display=='' ||
document.getElementById('target1').style.display=='table-cell') {
document.getElementById('target1').style.display='none';
document.getElementById('target2').style.display='none';
} else {
document.getElementById('target1').style.display='table-cell';
document.getElementById('target2').style.display='table-cell';
}
}
document.getElementById('toggle').onclick = function(){ toggleFirstColumn(); return false; };
</script>
</body>
</html>
Ich habe das gerade verifiziert - Danke! Das ist viel besser als der Hack, den ich gepostet habe. –
@tom, danke, und ich bin froh, dass das geholfen hat. – avernet
Das hat nicht für mich funktioniert. Ich musste die Tabelle zuerst in einem settimeout ausblenden und dann in einem verschachtelten settimeout wieder anzeigen. – Urbycoz