Это дополнительный вопрос к вопросу Могу ли я создать ширину таблицы HTML в процентах по высоте, но высоту строки с точностью до пикселя? .
У меня есть таблица на HTML-странице, которая будет использоваться для табличных данных (поэтому я не хочу, чтобы ответ основывался на div). Это должно быть выполнено на высоте 100%, причем верхний ряд имеет фиксированный размер, а второй ряд растягивается, чтобы соответствовать остальной части доступной области.
Я использовал следующий код:
<html>
<body>
<table style="border-collapse:collapse;height:100%;width:100%;">
<tr>
<td style="border:solid 1px black;height:100px">1</td>
<td style="border:solid 1px black">2</td>
</tr>
<tr>
<td style="border:solid 1px black">3</td>
<td style="border:solid 1px black">4</td>
</tr>
</table>
</body>
</html>
Это работает так, как мне нужно.
Проблема в том, что когда я помещаю это на страницу ASP.NET, созданную в Visual Studio, он добавляет элемент DOCTYPE. После добавления DOCTYPE (и установки CSS для тегов html и body, чтобы они включали высоту: 100%), верхняя строка таблицы намного больше нижней строки, и ни одна строка не имеет фиксированной высоты.
Я знаю, что должен использовать DOCTYPE, а не полагаться на «режим причуд» в Internet Explorer для обеспечения будущей совместимости. Тем не менее, я попробовал все DOCTYPE, которые я могу найти, чтобы попытаться изменить это поведение на то, что мне нужно, но не могу заставить его работать. Это работает в Firefox, но работа для Интранета, где пользователи используют IE7.
Если вы хотите увидеть проблему, попробуйте следующее:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html style="height:100%">
<body style="height:100%">
<table style="border-collapse:collapse;height:100%;width:100%;">
<tr>
<td style="border:solid 1px black;height:100px">1</td>
<td style="border:solid 1px black">2</td>
</tr>
<tr>
<td style="border:solid 1px black">3</td>
<td style="border:solid 1px black">4</td>
</tr>
</table>
</body>
</html>
Кто-нибудь знает ответ?