Я действительно пытаюсь работать с div и не могу получить эквивалент следующей простой компоновке таблицы:
<!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" xml:lang="en" lang="en">
<head>
<title>Table example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
html, body {height: 100%}
.content {width: 750px; vertical-align: top}
</style>
</head>
<body style="margin: 0; padding: 0">
<table style="height: 100%; width: 100%; border-collapse: collapse">
<tr style="background-color: #666666">
<td></td>
<td class="content" style="height: 100px"><h1>Header Content</h1></td>
<td></td>
</tr>
<tr style="background-color: #BBBBBB">
<td></td>
<td class="content" style="background-color: #FFFFFF"><h1>Main Content</h1></td>
<td></td>
</tr>
<tr style="background-color: #666666">
<td></td>
<td class="content" style="height: 100px"><h1>Footer Content</h1>
</td>
<td></td>
</tr>
</table>
</body>
</html>
Важные элементы, которые я хочу сохранить:
Любой реальный контент имеет фиксированную ширину. (в данном случае 750px)
Фоны верхнего и нижнего колонтитула расширяются до 100% ширины страницы.
Фон основного содержимого не расширяется по горизонтали, но расширяется по вертикали, заполняя область между верхним и нижним колонтитулами.
Нижний колонтитул всегда находится внизу страницы, даже если основное содержимое не очень высокое.
Я испробовал несколько стратегий и нашел, по крайней мере, 2 разных способа сохранить нижний колонтитул внизу страницы, используя div. К сожалению, если основное содержимое находится в элементе div, кажется, нет никакого способа сделать его вертикальным, чтобы заполнить пространство между верхним и нижним колонтитулом на коротких страницах.
Редактировать: Изменен пример, чтобы показать, что он работает, даже когда не в режиме причуд. Вышеуказанное подтверждает.
Редактировать 2:
Я нашел способ сделать это по большей части с помощью JavaScript. Итак, я предполагаю, что мой вопрос: как мне сделать это без JavaScript. Вот что я использую (я уверен, что это работает только в Firefox, но я мог бы это исправить):
<script type="text/javascript">
function changeDiv() {
document.getElementById("content").style.minHeight = document.body.clientHeight - 200 + "px";
}
changeDiv();
window.onresize = changeDiv;
</script>
«content» будет указывать на основной контент div, который я хочу расширить.