Введение в современные веб-технологии

Табличная и бестабличная вёрстка

Разбить на страницы
Показывать лекцию целиком

Задача вёрстки HTML-страниц появилась раньше, чем язык CSS, поэтому у неё давно имеется решение, не основанное на стилях. Любой макет страницы можно представить как таблицу, ячейки которой имеют требуемые размеры, позиции, оформление и содержание. Метод вёрстки, основанный на таблицах, совершенно универсален, достаточно прямолинеен и прост, он влечёт за собой сравнительно немного трудностей, связанных с кросс-браузерной совместимостью. Большой недостаток всего один: этот метод не даёт никаких средств для поддержки изменчивости дизайна, т.е. смены оформления макета. При табличной вёрстке оформление неразрывно связано с содержанием документа.

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

Табличная вёрстка

Рассмотрим сначала пример табличной вёрстки, демонстрирующий основные приёмы разметки - объединение ячеек, установку границ и вертикальное выравнивание.

<table>
    <tr>
      <td colspan="3" class="header">
        <h1>
          Заголовок страницы</h1>
      </td>
    </tr>
    <tr>
      <td colspan="3" class="nav"><a href="#">Ссылка 1</a>
  <a href="#">Ссылка 2</a><a href="#">Ссылка 3</a><a href="#">Ссылка 4</a></td>
    </tr>
    <tr>
      <td width="20%" class="menu"><a href="#">Maecenas malesuada</a> <a href="#">Integer molestie</a>
 <a href="#">Vivamus aliquet</a> <a href="#">Aliquam imperdiet</a> 
 <a href="#">Morbi pellentesque </a></td><td width="55%" class="main">
        <h2>
          Центральная колонка</h2>
        <p>
          Любой макет страницы......
        </p>
        <p>
          Большой недостаток...
        </p>
      </td><td width="25%" class="rightcol">  </td>
    </tr>
    <tr>
      <td colspan="3" class="footer">Нижний колонтитул</td>
    </tr>
  </table>
(рис 10.1) Макет страницы, построенный как таблица Упражнение. Текст верхнего колонтитула выровняйте по центру, навигацию перенесите в низ страницы, а ссылки в меню выровняйте по верхнему краю. Введите какой-нибудь текст в правую (пустую) колонку.

Очевидно, что хотя стили в рассмотренном примере и играют существенную роль, но вёрсткой всецело управляет таблица, и нельзя изменить оформления макета, не затронув этой таблицы. Такой способ вёрстки на сегодняшний день считается устаревшим (хотя и может применяться в пределах отдельных блоков).

CSS-вёрстка. Макет с одной колонкой

Перейдём к рассмотрению CSS-вёрстки, начиная с простейшего одноколоночного макета. В этом случае достаточно применить горизонтальное центрирование к единственной колонке (которая обычно представлена в разметке секцией). Вообще говоря, центрирование макета необязательно, но в большинстве примеров данной лекции оно осуществляется (отказаться от него всегда легко).

В примерах рассматриваются два типа разметки — с фиксированной и непостоянной шириной — каждый из которых имеет свои плюсы и минусы. Дизайн с фиксированной шириной гарантирует то, что разметка выглядит неизменно при различных размерах мониторов. Однако на очень маленьком мониторе посетителю, возможно, придется горизонтально прокручивать страницу, чтобы просмотреть все содержимое. А на действительно широком мониторе макет с постоянной шириной будет выглядеть затерянной узкой полоской.

Разметки с непостоянной шириной решают эти проблемы, но у них также есть свои собственные ограничения. На маленьком экране свободная разметка может настолько сжаться, что весь дизайн развалится, а при очень широком экране растянется так, что посетителям придётся читать ненормально длинные строки текста.

Есть CSS-свойства, которые предусмотрены для того, чтобы решить эту проблему: min-width, min-height, max-width и max-height.

Свойства min- указывают браузеру сделать элемент, по крайней мере, таким же широким или высоким, как указанное значение. Вы можете применить свойство min-width к элементу body, чтобы управлять всей шириной содержимого страницы. Если посетитель расширит окно своего браузера до 1000 пикселов, содержимое страницы растянется так, что будет соответствовать всему доступному пространству. Однако если он сделает окно шириной 500 пикселов, то содержимое останется 760 пикселов в ширину, а браузер добавит горизонтальные полосы прокрутки. Свойство min-height делает то же самое, но для высоты документа.

Свойства max- задают максимальные размеры. С ними вы будете уверены, что ваши страницы не станут слишком широкими, а значит, непригодными для чтения.

Комбинируя перечисленные свойства, вы можете создать стиль, который изменяет размеры элемента в пределах установленных значений, так что дизайн никогда не станет слишком маленьким или слишком большим. Internet Explorer 6 и ниже полностью игнорирует эти свойства.

#frame {
      width: 70%;
      min-width: 400px;
      margin-left: auto;
      margin-right: auto;
      background-color: #ddd;
      padding: 5px;
    }
  ...
  <div id="frame">
    <h1>
      Заголовок страницы</h1>
    <p>
      В случае одноколоночного макета достаточно применить горизонтальное центрирование
      к единственной колонке (которая обычно представлена в разметке секцией).
      Дизайн с фиксированной шириной гарантирует то, что разметка выглядит неизменно
      при различных размерах мониторов. Однако на очень маленьком мониторе посетителю,
      возможно, придется горизонтально прокручивать страницу, чтобы просмотреть
      все содержимое. А на действительно широком мониторе макет с постоянной
      шириной будет выглядеть затерянной узкой полоской.
    </p>
    <p>
      Разметки с непостоянной шириной решают эти проблемы, но у них также есть
      свои собственные ограничения. На маленьком экране свободная разметка может
      настолько сжаться, что весь дизайн развалится, а при очень широком экране
      растянется так, что посетителям придётся читать ненормально длинные строки
      текста. Есть CSS-свойства, которые предусмотрены для того, чтобы решить
      эту проблему: min-width, min-height, max-width и max-height.
    </p>
  </div>
(рис 10.2) Макет с одной колонкой непостоянной ширины Поочерёдно откройте оба варианта данного примера в новом окне и, изменяя ширину окна браузера, проследите за поведением макета.

Добавьте к макету нижний колонтитул с тёмно-серым фоном.

CSS-вёрстка. Макет с двумя колонками

Переходя к большему числу колонок, будем применять позиционирование на основе плавающих элементов, при котором ширина колонок также может быть фиксированной или непостоянной. Следует очень внимательно следить за тем, чтобы суммарная ширина всех колонок не превысила 100% (при непостоянной ширине) или ширины общего контейнера (при фиксированной ширине). Иначе последняя колонка переместится вниз. Подсчитывая суммарную ширину, принимайте в расчёт значение свойства width колонки, а также padding и border и, если есть, margin. Разумеется, поля, границы и отступы учитываются с обеих сторон. С этим подсчётом связано следующее затруднение: как сложить, например, 50% и 2px? Решить его можно двумя способами: или пользоваться везде только одним способом измерения (пикселы либо проценты), или же оценить максимально возможную процентную долю пиксела, ограничив ширину макета. Например, если для глобального контейнера, содержащего весь макет, указано свойство min-width: 400px, то можно быть уверенным, что 4px не превосходят одного процента ширины макета.

В остальном идея проста: колонки снабжаются свойством float:left и указанием ширины, а также отступа и поля. При двух- и трёхколоночном макете необязательно делать плавающей центральную колонку (иногда это нежелательно) - вместо этого ей можно задать достаточные отступы слева и справа, а крайние колонки сделать плавающими - одну с float:left, а другую с float:right.

Задавая колонкам фоновые цвета, вы обнаружите, что, когда в колонке мало содержимого, заполненный фоном блок смотрится не вполне эстетично. Предпочтительнее, чтобы он доходил внизу до нижнего колонтитула (или края страницы).

Чтобы добиться этого эффекта, не обойтись без специального трюка: например, заполнить страницу вертикально фоновым изображением, имеющим высоту 1 пиксел и повторяющим в горизонтальном направлении раскраску колонок. Понятно, что на самом деле колонки останутся той же высоты (которая зависит от содержимого и полей), но внешне будет казаться, что они "достают" до нижнего колонтитула.

#frame {
      width: 85%;
      min-width: 400px;
      margin: 0 auto;
    }
    #col1 {
      float: left;
      width: 66%;
      padding-right: 4px;
      margin-right: 4px;
      border-right: 1px solid black;
    }
    #col2 {
      float: left;
      width: 30%;
      padding: 4px;
      background-color: #ddd;
    }
    #footer {
      clear: both;
      border-top: 1px solid black;
      padding-top: 5px;
      margin-top: 5px;
    }
  ...
  <div id="frame">

    <div id="col1">
      <h1>
        Заголовок страницы</h1>
      <p>
        Переходя к большему числу колонок, будем применять позиционирование на
        основе плавающих элементов...
      </p>
      <p>
        В остальном идея проста: колонки снабжаются свойством float:left и указанием
        ширины, а также отступа и поля...</p>
    </div>

    <div id="col2">
      <p>
        Задавая колонкам фоновые цвета, вы обнаружите, что, когда в колонке мало
        содержимого, заполненный фоном блок смотрится не вполне эстетично...</p>
    </div>

    <div id="footer">
      (c) Копирайт
    </div>

  </div>
(рис 10.3) Макет с 2 столбцами непостоянной ширины
#frame {
      width: 600px;
      margin: 0 auto;
      background-image: url(600px_220gray.png);
    }
    #col1 {
      float: left;
      width: 349px;
      padding-right: 10px;
      margin-right: 10px;
      border-right: 1px solid black;
    }
    #col2 {
      float: left;
      width: 220px;
      padding-left: 10px;
    }
    #footer {
      clear: both;
      border-top: 1px solid black;
      padding-top: 5px;
      background-color: White;
    }
(рис 10.4) Макет с 2 столбцами фиксированной ширины - заполнение фоном всей высоты меньшего столбца Упражнение. Как поменять местами левую и правую колонки? Как добавить верхний колонтитул?

CSS-вёрстка. Макет с тремя колонками. Асимметричный макет

Аналогичным образом строится и трёхколоночный макет.

body {
      background-color: #bbb;
    }
    #frame {
      width: 760px;
      margin: 0 auto;
      background-color: #eee;
    }
    #header {
      border-bottom: 1px solid black;
      padding: 5px;
      text-align: center;
    }
    #col1 {
      float: left;
      width: 200px;
      padding-left: 10px;
    }
    #col2 {
      float: left;
      width: 328px;
      padding-left: 10px;
      padding-right: 10px;
      margin-left: 10px;
      margin-right: 10px;
      border-left: 1px solid black;
      border-right: 1px solid black;
    }
    #col3 {
      float: left;
      width: 170px;
      padding-right: 10px;
    }
    #footer {
      clear: both;
      border-top: 1px solid black;
      padding: 5px;
      margin-top: 5px;
      text-align: center;
    }
  ...
  <div id="frame">

    <div id="header">
      <h1>
        Заголовок страницы</h1>
    </div>

    <div id="col1">
      <p>
        Левая колонка имеет ширину 200px и левое поле 10px.</p>
    </div>

    <div id="col2">
      <h2>
        Центральная колонка</h2>
      <p>
        Все 3 колонки - плавающие, и их суммарная ширина (вместе со всеми полями,
        отступами и рамками) равна 760px.</p>
      <p>
        Все секции помещены в один общий контейнер, которому задана ширина 760px
        и который центрирован горизонтально на странице.</p>
    </div>

    <div id="col3">
      <p>
        Правая колонка имеет ширину 328px, горизонтальные поля 10px, горизонтальные
        отступы 10px и однопиксельные сплошные рамки.</p>
    </div>

    <div id="footer">
      Нижний колонтитул имеет поле 5px, отступ сверху 5px и однопиксельную рамку
      сверху.
    </div>

  </div>
(рис 10.5) Макет с 3 колонками с верхним колонтитулом

Необязательно, чтобы макет страницы представлял собой набор колонок, выстроенных в один ряд. Нередко встречается и "неправильный" дизайн - с произвольным размещением элементов - особенно, если на странице совсем немного содержимого. Для его создания легче воспользоваться WYSIWYG-редактором, в котором вы сможете создать набор блоков с абсолютным позиционированием и координатами границ, выраженными в пикселах или процентах.

#main {
      bottom: 10%;
      left: 5%;
      width: 40%;
    }
    #title {
      top: 50%;
      left: 50%;
      width: auto;
    }
    #title h1 {
      margin: 0;
    }
    #block2 {
      top: 2%;
      right: 2%;
      width: 25%;
    }
    div:hover {
      z-index: 1;
    }
  ...
  <div id="main">
    <p>
      <strong>Центральный блок</strong> имеет ширину 40% (от ширины страницы)
      и позиционирован абсолютно следующим образом: bottom: 10%; left: 5%;.
    </p>
    <p>
      "Неправильный" дизайн - с произвольным размещением элементов - используется
      обычно когда на странице совсем немного содержимого.
    </p>
  </div>

  <div id="title">
    <h1>
      Заголовок</h1>
  </div>

  <div id="block2">
    <strong>Блок 2 </strong>позиционирован при помощи свойств top: 2%; right:
    2%;
  </div>
(рис 10.6) Асимметричный макет с непостоянной шириной элементов

Вопросы

  • В чём заключаются преимущества и недостатки табличной вёрстки макета страницы?
  • В чём заключаются преимущества и недостатки вёрстки с фиксированной и непостоянной шириной колонок?
  • Как гарантировать, что суммарная ширина элементов, размеры которых измеряются как в пикселах, так и в процентах, не превосходит ширины окна?
  • Какой приём используется для заполнения фоном всей высоты колонки с небольшим количеством содержимого?
  • Какую HTML-структуру имеет многоколоночный макет?
  • Страницы:

    Задача вёрстки HTML-страниц появилась раньше, чем язык CSS, поэтому у неё давно имеется решение, не основанное на стилях. Любой макет страницы можно представить как таблицу, ячейки которой имеют требуемые размеры, позиции, оформление и содержание. Метод вёрстки, основанный на таблицах, совершенно универсален, достаточно прямолинеен и прост, он влечёт за собой сравнительно немного трудностей, связанных с кросс-браузерной совместимостью. Большой недостаток всего один: этот метод не даёт никаких средств для поддержки изменчивости дизайна, т.е. смены оформления макета. При табличной вёрстке оформление неразрывно связано с содержанием документа.

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

    Табличная вёрстка

    Рассмотрим сначала пример табличной вёрстки, демонстрирующий основные приёмы разметки - объединение ячеек, установку границ и вертикальное выравнивание.

    <table>
        <tr>
          <td colspan="3" class="header">
            <h1>
              Заголовок страницы</h1>
          </td>
        </tr>
        <tr>
          <td colspan="3" class="nav"><a href="#">Ссылка 1</a>
      <a href="#">Ссылка 2</a><a href="#">Ссылка 3</a><a href="#">Ссылка 4</a></td>
        </tr>
        <tr>
          <td width="20%" class="menu"><a href="#">Maecenas malesuada</a> <a href="#">Integer molestie</a>
     <a href="#">Vivamus aliquet</a> <a href="#">Aliquam imperdiet</a> 
     <a href="#">Morbi pellentesque </a></td><td width="55%" class="main">
            <h2>
              Центральная колонка</h2>
            <p>
              Любой макет страницы......
            </p>
            <p>
              Большой недостаток...
            </p>
          </td><td width="25%" class="rightcol">  </td>
        </tr>
        <tr>
          <td colspan="3" class="footer">Нижний колонтитул</td>
        </tr>
      </table>
    (рис 10.1) Макет страницы, построенный как таблица Упражнение. Текст верхнего колонтитула выровняйте по центру, навигацию перенесите в низ страницы, а ссылки в меню выровняйте по верхнему краю. Введите какой-нибудь текст в правую (пустую) колонку.

    Очевидно, что хотя стили в рассмотренном примере и играют существенную роль, но вёрсткой всецело управляет таблица, и нельзя изменить оформления макета, не затронув этой таблицы. Такой способ вёрстки на сегодняшний день считается устаревшим (хотя и может применяться в пределах отдельных блоков).

    CSS-вёрстка. Макет с одной колонкой

    Перейдём к рассмотрению CSS-вёрстки, начиная с простейшего одноколоночного макета. В этом случае достаточно применить горизонтальное центрирование к единственной колонке (которая обычно представлена в разметке секцией). Вообще говоря, центрирование макета необязательно, но в большинстве примеров данной лекции оно осуществляется (отказаться от него всегда легко).

    В примерах рассматриваются два типа разметки — с фиксированной и непостоянной шириной — каждый из которых имеет свои плюсы и минусы. Дизайн с фиксированной шириной гарантирует то, что разметка выглядит неизменно при различных размерах мониторов. Однако на очень маленьком мониторе посетителю, возможно, придется горизонтально прокручивать страницу, чтобы просмотреть все содержимое. А на действительно широком мониторе макет с постоянной шириной будет выглядеть затерянной узкой полоской.

    Разметки с непостоянной шириной решают эти проблемы, но у них также есть свои собственные ограничения. На маленьком экране свободная разметка может настолько сжаться, что весь дизайн развалится, а при очень широком экране растянется так, что посетителям придётся читать ненормально длинные строки текста.

    Есть CSS-свойства, которые предусмотрены для того, чтобы решить эту проблему: min-width, min-height, max-width и max-height.

    Свойства min- указывают браузеру сделать элемент, по крайней мере, таким же широким или высоким, как указанное значение. Вы можете применить свойство min-width к элементу body, чтобы управлять всей шириной содержимого страницы. Если посетитель расширит окно своего браузера до 1000 пикселов, содержимое страницы растянется так, что будет соответствовать всему доступному пространству. Однако если он сделает окно шириной 500 пикселов, то содержимое останется 760 пикселов в ширину, а браузер добавит горизонтальные полосы прокрутки. Свойство min-height делает то же самое, но для высоты документа.

    Свойства max- задают максимальные размеры. С ними вы будете уверены, что ваши страницы не станут слишком широкими, а значит, непригодными для чтения.

    Комбинируя перечисленные свойства, вы можете создать стиль, который изменяет размеры элемента в пределах установленных значений, так что дизайн никогда не станет слишком маленьким или слишком большим. Internet Explorer 6 и ниже полностью игнорирует эти свойства.

    #frame {
          width: 70%;
          min-width: 400px;
          margin-left: auto;
          margin-right: auto;
          background-color: #ddd;
          padding: 5px;
        }
      ...
      <div id="frame">
        <h1>
          Заголовок страницы</h1>
        <p>
          В случае одноколоночного макета достаточно применить горизонтальное центрирование
          к единственной колонке (которая обычно представлена в разметке секцией).
          Дизайн с фиксированной шириной гарантирует то, что разметка выглядит неизменно
          при различных размерах мониторов. Однако на очень маленьком мониторе посетителю,
          возможно, придется горизонтально прокручивать страницу, чтобы просмотреть
          все содержимое. А на действительно широком мониторе макет с постоянной
          шириной будет выглядеть затерянной узкой полоской.
        </p>
        <p>
          Разметки с непостоянной шириной решают эти проблемы, но у них также есть
          свои собственные ограничения. На маленьком экране свободная разметка может
          настолько сжаться, что весь дизайн развалится, а при очень широком экране
          растянется так, что посетителям придётся читать ненормально длинные строки
          текста. Есть CSS-свойства, которые предусмотрены для того, чтобы решить
          эту проблему: min-width, min-height, max-width и max-height.
        </p>
      </div>
    (рис 10.2) Макет с одной колонкой непостоянной ширины Поочерёдно откройте оба варианта данного примера в новом окне и, изменяя ширину окна браузера, проследите за поведением макета.

    Добавьте к макету нижний колонтитул с тёмно-серым фоном.

    CSS-вёрстка. Макет с двумя колонками

    Переходя к большему числу колонок, будем применять позиционирование на основе плавающих элементов, при котором ширина колонок также может быть фиксированной или непостоянной. Следует очень внимательно следить за тем, чтобы суммарная ширина всех колонок не превысила 100% (при непостоянной ширине) или ширины общего контейнера (при фиксированной ширине). Иначе последняя колонка переместится вниз. Подсчитывая суммарную ширину, принимайте в расчёт значение свойства width колонки, а также padding и border и, если есть, margin. Разумеется, поля, границы и отступы учитываются с обеих сторон. С этим подсчётом связано следующее затруднение: как сложить, например, 50% и 2px? Решить его можно двумя способами: или пользоваться везде только одним способом измерения (пикселы либо проценты), или же оценить максимально возможную процентную долю пиксела, ограничив ширину макета. Например, если для глобального контейнера, содержащего весь макет, указано свойство min-width: 400px, то можно быть уверенным, что 4px не превосходят одного процента ширины макета.

    В остальном идея проста: колонки снабжаются свойством float:left и указанием ширины, а также отступа и поля. При двух- и трёхколоночном макете необязательно делать плавающей центральную колонку (иногда это нежелательно) - вместо этого ей можно задать достаточные отступы слева и справа, а крайние колонки сделать плавающими - одну с float:left, а другую с float:right.

    Задавая колонкам фоновые цвета, вы обнаружите, что, когда в колонке мало содержимого, заполненный фоном блок смотрится не вполне эстетично. Предпочтительнее, чтобы он доходил внизу до нижнего колонтитула (или края страницы).

    Чтобы добиться этого эффекта, не обойтись без специального трюка: например, заполнить страницу вертикально фоновым изображением, имеющим высоту 1 пиксел и повторяющим в горизонтальном направлении раскраску колонок. Понятно, что на самом деле колонки останутся той же высоты (которая зависит от содержимого и полей), но внешне будет казаться, что они "достают" до нижнего колонтитула.

    #frame {
          width: 85%;
          min-width: 400px;
          margin: 0 auto;
        }
        #col1 {
          float: left;
          width: 66%;
          padding-right: 4px;
          margin-right: 4px;
          border-right: 1px solid black;
        }
        #col2 {
          float: left;
          width: 30%;
          padding: 4px;
          background-color: #ddd;
        }
        #footer {
          clear: both;
          border-top: 1px solid black;
          padding-top: 5px;
          margin-top: 5px;
        }
      ...
      <div id="frame">
    
        <div id="col1">
          <h1>
            Заголовок страницы</h1>
          <p>
            Переходя к большему числу колонок, будем применять позиционирование на
            основе плавающих элементов...
          </p>
          <p>
            В остальном идея проста: колонки снабжаются свойством float:left и указанием
            ширины, а также отступа и поля...</p>
        </div>
    
        <div id="col2">
          <p>
            Задавая колонкам фоновые цвета, вы обнаружите, что, когда в колонке мало
            содержимого, заполненный фоном блок смотрится не вполне эстетично...</p>
        </div>
    
        <div id="footer">
          (c) Копирайт
        </div>
    
      </div>
    (рис 10.3) Макет с 2 столбцами непостоянной ширины
    #frame {
          width: 600px;
          margin: 0 auto;
          background-image: url(600px_220gray.png);
        }
        #col1 {
          float: left;
          width: 349px;
          padding-right: 10px;
          margin-right: 10px;
          border-right: 1px solid black;
        }
        #col2 {
          float: left;
          width: 220px;
          padding-left: 10px;
        }
        #footer {
          clear: both;
          border-top: 1px solid black;
          padding-top: 5px;
          background-color: White;
        }
    (рис 10.4) Макет с 2 столбцами фиксированной ширины - заполнение фоном всей высоты меньшего столбца Упражнение. Как поменять местами левую и правую колонки? Как добавить верхний колонтитул?

    CSS-вёрстка. Макет с тремя колонками. Асимметричный макет

    Аналогичным образом строится и трёхколоночный макет.

    body {
          background-color: #bbb;
        }
        #frame {
          width: 760px;
          margin: 0 auto;
          background-color: #eee;
        }
        #header {
          border-bottom: 1px solid black;
          padding: 5px;
          text-align: center;
        }
        #col1 {
          float: left;
          width: 200px;
          padding-left: 10px;
        }
        #col2 {
          float: left;
          width: 328px;
          padding-left: 10px;
          padding-right: 10px;
          margin-left: 10px;
          margin-right: 10px;
          border-left: 1px solid black;
          border-right: 1px solid black;
        }
        #col3 {
          float: left;
          width: 170px;
          padding-right: 10px;
        }
        #footer {
          clear: both;
          border-top: 1px solid black;
          padding: 5px;
          margin-top: 5px;
          text-align: center;
        }
      ...
      <div id="frame">
    
        <div id="header">
          <h1>
            Заголовок страницы</h1>
        </div>
    
        <div id="col1">
          <p>
            Левая колонка имеет ширину 200px и левое поле 10px.</p>
        </div>
    
        <div id="col2">
          <h2>
            Центральная колонка</h2>
          <p>
            Все 3 колонки - плавающие, и их суммарная ширина (вместе со всеми полями,
            отступами и рамками) равна 760px.</p>
          <p>
            Все секции помещены в один общий контейнер, которому задана ширина 760px
            и который центрирован горизонтально на странице.</p>
        </div>
    
        <div id="col3">
          <p>
            Правая колонка имеет ширину 328px, горизонтальные поля 10px, горизонтальные
            отступы 10px и однопиксельные сплошные рамки.</p>
        </div>
    
        <div id="footer">
          Нижний колонтитул имеет поле 5px, отступ сверху 5px и однопиксельную рамку
          сверху.
        </div>
    
      </div>
    (рис 10.5) Макет с 3 колонками с верхним колонтитулом

    Необязательно, чтобы макет страницы представлял собой набор колонок, выстроенных в один ряд. Нередко встречается и "неправильный" дизайн - с произвольным размещением элементов - особенно, если на странице совсем немного содержимого. Для его создания легче воспользоваться WYSIWYG-редактором, в котором вы сможете создать набор блоков с абсолютным позиционированием и координатами границ, выраженными в пикселах или процентах.

    #main {
          bottom: 10%;
          left: 5%;
          width: 40%;
        }
        #title {
          top: 50%;
          left: 50%;
          width: auto;
        }
        #title h1 {
          margin: 0;
        }
        #block2 {
          top: 2%;
          right: 2%;
          width: 25%;
        }
        div:hover {
          z-index: 1;
        }
      ...
      <div id="main">
        <p>
          <strong>Центральный блок</strong> имеет ширину 40% (от ширины страницы)
          и позиционирован абсолютно следующим образом: bottom: 10%; left: 5%;.
        </p>
        <p>
          "Неправильный" дизайн - с произвольным размещением элементов - используется
          обычно когда на странице совсем немного содержимого.
        </p>
      </div>
    
      <div id="title">
        <h1>
          Заголовок</h1>
      </div>
    
      <div id="block2">
        <strong>Блок 2 </strong>позиционирован при помощи свойств top: 2%; right:
        2%;
      </div>
    (рис 10.6) Асимметричный макет с непостоянной шириной элементов

    Вопросы

  • В чём заключаются преимущества и недостатки табличной вёрстки макета страницы?
  • В чём заключаются преимущества и недостатки вёрстки с фиксированной и непостоянной шириной колонок?
  • Как гарантировать, что суммарная ширина элементов, размеры которых измеряются как в пикселах, так и в процентах, не превосходит ширины окна?
  • Какой приём используется для заполнения фоном всей высоты колонки с небольшим количеством содержимого?
  • Какую HTML-структуру имеет многоколоночный макет?
  • Вернуться к учебному плану