CSS-макет полной высоты и полной ширины

Я ищу способ создать макет только для CSS (без JavaScript) с 5 областями, которые выглядит так: A, B, C должны иметь одинаковую высоту; и H и F должны иметь одинаковую ширину. Т.е. между регионами не должно быть пропусков, кроме фиксированной маржи. Элементы внутри региона должны знать размер своих родителей; это означает, что если я поместу

   <textarea style="width:100%;height:100%">Just a test</textarea>

внутри области, он будет распространяться на всю ширину и высоту области. В правой части окна браузера не должно быть полосы прокрутки (поскольку высота H, C и F в точности соответствует высоте клиентской области браузера).

Это очень легко сделать, если вы используя

, чтобы сделать макет. Но я продолжаю читать, что использование таблиц для форматирования - это плохо, и CSS - это путь.

Я знаю, что есть рабочие группы W3C, которые работают над расширением стандарта CSS с помощью функций, которые сделали бы приведенный выше макет очень простым реализовать. Эти стандартные расширения, однако, в настоящее время не реализованы большинством браузеров; и мне нужно решение, которое работает с текущими браузерами.

Я просматривал множество веб-страниц, содержащих образцы макетов CSS, но ни одна из них не может сделать то, что я описал выше. Большинство из этих макетов либо не в полный рост, или столбцы имеют разную высоту, или они требуют JavaScript.

Поэтому мой вопрос: возможно ли создать макет выше, используя только CSS ( нет JavaScript, нет искусственных столбцов, нет <таблица > )? Конечно, решение должно работать с современными веб-браузерами.

РЕДАКТИРОВАТЬ: На основе решения, предоставленного Гилшемом, мне удалось написать пример страницы, которая генерирует желаемый макет только для CSS (протестировано с Firefox 3.5.5 и IE8):

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html,body{
    height:100%;    
    margin:0;
    padding:0;
    border:0;
}

div{
    margin:0;
    border:0;
}

textarea {
    margin:0;
    border:0;
    padding:0;
    height:100%;
    width:100%;
}

.content{
    display:table;
    width:100%;
    border-collapse:separate;
    height:80%;
}

.Col{
    display:table-cell;
    width:30%;
    height:100%;
}

#header,#footer{
    height:10%;
    position:relative;
    z-index:1;
}

</style>
</head>
<body>
<div id="header"><textarea style="background-color:orange;">H Just a test</textarea></div>
<div class="content">
    <div id="left" class="Col"><textarea style="background-color:lightskyblue;">A Just a test</textarea></div>
    <div id="center" class="Col"><textarea style="background-color:green;">B Just a test</textarea></div>
    <div id="right" class="Col"><textarea style="background-color:lime;">C Just a test</textarea></div>
</div>
<div id="footer"><textarea style="background-color:yellow;">F Just a test</textarea></div>
</body>
</html>

Одним из недостатков является то, что div должен быть указан в определенном порядке, что плохо для поисковой оптимизации и для программ чтения с экрана; это, однако, не важно для предполагаемого веб-приложения.

/ Frank

12
задан 7 September 2010 в 06:55
поделиться