Отправляет email-рассылки с помощью сервиса Sendsay

Рецепты HTML

  Все выпуски  

Рецепты HTML # 101


Информационный Канал Subscribe.Ru

 | Руководство | Дизайн и юзабилити | Графика | Создание и раскрутка сайта |
| Справочная информация | Инструментарий | Шаблоны | Все статьи | Форум |  

Добрый день.

На сайте новая статья Игоря Бурцева - Расстановка ключевых слов внутри сайта.

В форуме сайта я добавил опрос - По какой теме вы бы хотели больше материалов на сайте. Прошу высказываться по данному вопросу, от этого зависит какие статьи появятся на сайте в ближайшее время. Регистрация на форуме обязательна только для тех, кто желает проголосовать, свое мнение можно добавить и без нее.

Сегодня продолжение темы о слоях и фиксированном дизайне, создаваемом с их помощь. Статья публикуется с незначительными сокращениемя. Полностью текст можно посмотреть по адресу www.htmlbook.ru/content/?id=173. В следующий раз поговорим об использовании параметров CSS position и как им пользоваться.

Фиксированный дизайн. Часть 2

Рассмотрим, как располагать рядом по горизонтали два и более слоя. По умолчанию, использование тега DIV для создания слоя, автоматически делает и перенос строки после него, поэтому несколько идущих подряд слоев выстраиваются по вертикали. Нас же интересует, а как сделать то же самое, но по горизонтали, чтобы можно было создать две колонки. Для решения данной задачи есть два подхода: первый основан на использовании параметра float, второй – на позиционировании элементов.

Использование параметра float

Здесь все просто, в стили совмещаемых слоев добавим параметр float: left. Этот элемент говорит, что слой необходимо выровнять по левому краю и обтекать его по правой стороне. Таким образом, рядом лежащий второй слой будет пристыкован к первому справа.

Теоретически, параметр float достаточно задавать лишь для одного слоя из двух. Однако браузер Internet Explorer в этом случае между слоями добавляет небольшой промежуток, что не всегда желательно. Чтобы все смотрелось именно так, как хочется, float следует указывать для всех слоев (пример 1).

Пример 1. Использование параметра float
<html>
<head>
<style type="text/css">

#menu { /* Навигация по сайту */

width: 200px;
float: left;
color: white;
padding: 10px;
background-color: #008000;

}

#content { /* Основное содержание страницы */

width: 550px;
float: left;
padding: 10px;
text-align: left;
background-color: #e0e0e0;

}

</style>
</head>

<body>

<div id=menu>...</div>
<div id=content>...</div>

</body>
</html>

Высота слоев определяется их содержимым, поэтому подход, показанный в примере 1, создаст две прямоугольной области разной высоты и цвета. Изменить эту ситуацию и сделать две колонки одинаковой высоты, независимо от содержимого слоев, можно, введя еще один дополнительный слой. У этого слоя, назовем его column, цвет фона должен совпадать с цветом фона левой колонки, а ширина равняться общей ширине двух колонок (пример 2).

Пример 2. Колонки равной высоты
<html>
<head>
<style type="text/css">

#column { /* Основа для меню и контента */

background: #008000;
width: 750px;

}

#menu { /* Навигация по сайту */

width: 200px;
float: left;
color: white;
padding: 0px;

}

#content { /* Основное содержание страницы */

background-color: #e0e0e0;
padding: 0px;
margin-left: 200px;

}

P { /* Стиль параграфа */

padding: 10px;
text-align: left;

}

</style>
</head>

<body>

<div id=column>
   <div id=menu> ... </div>
   <div id=content> ... </div>
</div>

</body>
</html>

Различие между двумя подходами к созданию колонок (пример 1 и 2) кроется не только в разном представлении слоев, но и в нюансах, пренебрежение которыми приведет к тому, что браузер покажет результат совсем не так, как ожидалось.

  • Ширина слоя content в данном случае не указывается, она вычисляется автоматически исходя из общей ширины, которая определяется шириной слоя column за вычетом ширины слоя menu.
  • Обязательно следует добавить параметр margin-left, без него колонок просто не получится. Этот атрибут смещает наш слой вправо на величину, равную ширине левой колонки, в данном случае, это 200 пикселей.
  • Следующая особенность связана с параметром padding, который задает поля от края слоя до его содержимого. Без него текст будет располагаться слишком близко от края цветного прямоугольника, образуемого слоем, что некрасиво и снижает читабельность текста. Но и добавление параметра padding в браузерах Opera и Netscape может привести к смещению текста в некоторых местах и вместо того, чтобы быть выровненным по левому краю, текст будет располагаться «лесенкой». Правильный выход из этой ситуации – вообще убрать параметр padding из стиля слоев и добавить нужное значение полей к стилю параграфа, который будет использоваться внутри колонок.
  • К сожалению, приведенный способ имеет один недостаток, который не позволяет использовать его как универсальный метод. Колонки будут показаны корректно и одинаковой высоты только в том случае, если содержимое правой колонки (слой content) превышает по объему содержимое левой колонки (слой menu). Другими словами, правая колонка всегда должна быть больше по высоте.

  • Copyright 2002, 2003 Влад Мержевич, e-mail: vlad@htmlbook.ru
    Материалы данного сайта охраняются законом об авторском праве.
    Вы можете свободно использовать и распространять любые статьи с указанием автора и ссылки на сайт.


    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться
    Убрать рекламу

    В избранное