Трехколоночный макет на CSS с одинаковой высотой колонок

Представляю Вашему вниманию еще один 3-хколоночный макет страницы, реализованный с помощью XHTML и CSS.

Вот так он выглядит в миниатюре:

Особенности:

  • Оба сайдбара (левая и правая колонки) расположены с правой стороны. Такой тип страницы сейчас очень популярен, он используется на многих блогах.
  • HTML-код основной колонки расположен до начала кода обоих сайдбаров.
  • Все 3 колонки визуально растягиваются одинаково по вертикали при увеличении высоты одной из них. При этом не используются изображения.
  • Универсальность — макет можно использоваться как в случае с фиксированной шириной страницы, так и в случае с «резиновой» шириной. Для этого необходимо применить соответствующие CSS-свойства у 3-х блоков (в примере есть комментарии).
  • Кроссбраузерность проверена в основных популярных браузерах: Opera 9.23, FireFox 2.0, IE 6, IE 7, Safari/Win.
  • Валидный XHTML, валидный CSS.

HTML-код

Основа макета выглядит следующим образом:


<html>
<body>

<div id="wrapper">

  <div id="header"></div>

  <div id="container">

    <div id="sub-container">
      <div id="wrpr">

        <div id="content">
          <div id="text"></div>
        </div>

        <div id="left"></div>

      </div>
    </div>

    <div id="right"></div>

  </div>

  <div id="footer"></div>

</div>

</body>
</html>

В связи с тем, что в «резиновом» варианте в Internet Explorer 7 наблюдался небольшой отступ справа от правой колонки, пришлось задействовать дополнительный контейнер #wrpr. При фиксированной верстке данный контейнер не нужен.

CSS-код

Здесь публикую только код, отвечающий за расположение и визуализацию колонок. Все остальное в примере.


#wrapper {
  /* для фиксированной ширины */
  width: 900px;
  margin: 0 auto;

  /* для "резиновой" ширины
  width: expression((documentElement.clientWidth||document.body.clientWidth)<995?'1000px':'');
  min-width: 1000px; */
}
#container {
  width: 100%;
  background: #D5FFD5; /* фон основной колонки */
}
* html #container {height: 1%;}
#container:after {
  /* закрываем плавающие блоки */
  content: '.';
  display: block;
  clear: both;
  visibility: hidden;
  height: 0;
  line-height: 0;
}
#sub-container {
  float: left;
  border-right: 200px solid #BFF2FF; /* фон правого сайдбара */

  /* для фиксированной ширины */
  width: 700px;

  /* для "резиновой" ширины
  width: 100%;
  margin-left: -200px; */
}
#wrpr {
  /* для "резиновой" ширины
  margin-left: 200px; */
}
#content {
  width: 100%;
  float: left;
}
#text {
  border-right: 200px solid #FFF2BF; /* фон левого сайдбара */
}
#left {
  float: left;
  width: 200px;
  margin-left: -200px;
  background: #FFF2BF; /* фон левого сайдбара */
  position: relative;
}
#right {
  float: left;
  width: 200px;
  margin-left: -400px;
  background: #BFF2FF; /* фон правого сайдбара */
  border-left: 200px solid #FFF2BF; /* фон левого сайдбара */
}

Пример

Смотрим готовый пример страницы, сверстанной описанным методом.

Для удобства можно скачать архив с примером универсальной трехколоночной страницы на CSS.

* * *

Аренда оптического волокна.

Комментарии (27)

  1. Васек
    Посмотите и здесь: http://trifler.ru/blog/comment_1223575204.html
    Даже, Димирию понравилось :)

  2. В IE 5.5 криво отображается правая колонка

  3. А как сделать так, чтобы между колонками были отступы? Колонки имеют background, но между ними прозрачные отступы и просвечивался основной фон страницы?