htmlbook.ru - Для тех, кто делает сайты
Статьи Книги Шаг за шагом Рецепты Форум Графика для Web
Главная страница > Статьи > Верстка с помощью слоев > Особенности верстки слоями

Особенности верстки слоями

Влад Мержевич

Текстовая версия   Добавить комментарий

К сожалению, табличная верстка наложила довольно сильный отпечаток на манеру верстки веб-страниц. И теперь, когда верстка с помощью слоев прочно входит в моду и завоевывает множество поклонников, предыдущие стереотипы пытаются проявиться с новой силой. Так что рассказ об особенностях верстки слоями придется начинать не со слоев, а с таблиц и том багаже, что они с собой принесли.

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

Что же в итоге получается? А то, что из конструктора, предназначенного для создания танка, пытаются сделать самолет. Думаете, это невозможно? Нет ничего невозможного, когда под рукой есть напильник и прорва времени. Но с другой стороны, может проще взять нужный конструктор...

Давайте для примера рассмотрим типичную и простую схему компоновки страницы (рис. 1).

Рис. 1

Рис. 1. Страница, созданная с помощью таблиц

В самом верху располагается «шапка» документа, где пишется заголовок сайта. Далее идут две колонки одинаковой высоты, колонки при этом для наглядности выделяются разным цветом. В самом низу располагается «подвал» страницы, куда помещают контактную информацию и другие служебные данные. При этом высота всего макета занимает всю доступную высоту окна браузера, т.е. «подвал» располагается у нижнего края веб-страницы. Правда это происходит только в том случае, если текста в колонках не так много. Когда объем текста превышает высоту веб-страницы, она отображается с вертикальной полосой прокрутки.

Несмотря на указанные условия, код, сформированный с помощью таблиц, отличается своей компактностью (пример 1). Для сокращения кода стили не применялись.

Пример 1. Использование таблиц

Валидный HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Сайт</title>
</head>
<body>

<table width="100%" cellpadding="5" cellspacing="0">
<tr>
<td height="60" colspan="2" bgcolor="#666699"><h1>Заголовок сайта</h1></td>
</tr>
<tr>
<td width="25%" bgcolor="#990033" valign="top">Левая колонка</td>
<td bgcolor="#999966" valign="top">Правая колонка</td>
</tr>
<tr>
<td height="30" colspan="2" bgcolor="#cccccc">Подвал страницы</td>
</tr>
</table>

</body>
</html>

Высота таблицы определяется параметром height тега <TABLE>. Хотя этот параметр отсутствует в спецификации HTML, но браузеры его понимают, что и приводит к желаемому результату. Значение 100% говорит, что таблица занимает всю доступную высоту веб-страницы.

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

  1. За основу берется табличная верстка и с помощью слоев она воплощается максимально близко к оригиналу.
  2. Используются особенности слоев, сайт верстается с их учетом.

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

Теперь переходим к особенностям слоев, чтобы понять, в чем же суть этого типа верстки.

Слои не таблицы

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

Высота слоев ограничена высотой контента

В таблице соседние ячейки взаимосвязаны, поэтому высота у них одна, независимо от объема информации. Это хорошо видно, если залить фон ячеек разным цветом. Слои же в каком-то смысле являются независимыми друг от друга, поэтому высота слоя определяется его содержимым. Вид документа при этом будет отличаться от его табличного собрата (рис. 2)

Рис. 2

Рис. 2. Страница, созданная с помощью слоев

Высота разных колонок на данном рисунке различается, поскольку формируется за счет их содержимого.

Замечание

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

Блочная верстка

Уже упоминалось, что слои в большинстве случаев являются независимыми друг от друга, за счет чего они как отдельные блоки могут добавляться или удаляться в макете веб-страницы. За такое поведение верстка с помощью слоев получила название «блочная верстка». Слои допустимо вкладывать один в другой для формирования желаемого декоративного элемента. Поэтому под именем «блок» подразумевается не столько отдельный слой, сколько их совокупность.

Расположение колонок

По умолчанию содержимое контейнеров <DIV> на веб-странице располагаются по вертикали, вначале идет один слой, ниже располагается следующий и т.д. При создании колонок требуется располагать слои рядом по горизонтали, для чего применяется несколько методов. Одним из распространенных является использование стилевого параметра float. Хотя он предназначен для создания обтекания вокруг элемента, с тем же успехом float устанавливает и колонки. Но здесь следует учесть одну особенность. При уменьшении окна браузера до некоторой критической ширины, колонки перестают располагаться горизонтально и перестраиваются друг под другом по вертикали. С этим фактом либо остается смириться, либо использовать другие методы формирования колонок через слои.

Резюме

Вид страниц и их поведение в браузере различается от того, каким способом сверстан документ — с помощью таблиц или слоев. Каждый из этих способов верстки имеет свои особенности, которые влияют в итоге на отображение веб-страницы. Что свойственно таблицам и документам, созданным на их основе, не является признаком слоев, и наоборот. Если это понимать и четко разграничивать сферы применения таблиц и слоев и не пытаться втиснуть одно в формат другого, то верстка сайтов со слоями существенно упрощается и становится более эффективной.

Статья опубликована: 31.01.2006 Последнее обновление: 30.04.2008

Прежде, чем писать комментарий к статье, примите во внимание следующие моменты.

  1. Не задавайте вопросы в комментариях, для этой цели предназначен форум, где вы получите нужную помощь.
  2. Удаляются любые комментарии, которые:
    • включают множество ошибок;
    • написаны безграмотно;
    • не имеют отношения к данной статье;
    • не содержат никакой полезной информации для посетителей.
  3. Для выделения отдельных слов используйте следующие команды: [b]жирный[/b], [i]курсив[/i], [color=цвет]цветной текст[/color], [tag]тег[/tag], [var]параметр[/var], [code]пример[/code].
  4. Потренироваться в написании комментариев вы можете в песочнице.

Комментарии к статье

Zladey@mail.ru

14.04.2006

а хде же исходник с блоками? табличный есть а блочного нету..
обидно...для меня , начинающего...

Влад Мержевич

14.04.2006

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

AlexanderCam маил ру

20.04.2006

Обожаю этот сайт, как и несколько лет назад он опять повысил мою квалификацию.

За полчаса переделал сайт из таблицы в слои.
И мне стало интересно: существуют ли какие-нибудь автоматизированные средства для верстки со слоями как это можно делать с таблицами в Фотошопе?

Влад Мержевич

04.05.2006

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

Pacman

05.05.2006

Так растягиваются блоки в IE6:
margin-bottom:-10000px;
padding-bottom:10000px;

А так в нормальных браузерах:
.tr {display:table-row;}
.td {display:table-cell;}

Denis

21.12.2006

И что получается со слоями в firefox?
Увеличили шрифт на один пункт(ctrl++) и прощай верстка? Содержимое слоя ведет себя отдельно от слоя. Как это преодолеть?

Влад Мержевич

22.12.2006

Не надо задавать высоту слоя, тогда и содержимое будет строго по слою.

RedRaven

06.01.2007

Огромное спасибо за полное и понятное изложение информации. Как хорошо что я наш?л ваш сайт!
Да, и ещ?, если у вас есть какие-нибудь рассылки с релизами новых статей, то где на них можно подписаться? Если можно, то ответ на e-mail: redravenmail@inbox.ru

Влад Мержевич

08.01.2007

Рассылки статей на этом сайте нет, есть RSS.

Серега

11.01.2007

Слои рулят! Но не всегда smile Слои - это больше CSS, а табличная верстка - это HTML.

ONi

24.01.2007

to Серега
А мне так кажется, что css и html это инструменты, так сказать из одной коробки, их можно конечно использовать и по отдельности, но лучший результат получается когда используешь их вместе.
Раньше тоже верстал таблицами и не понимал как верстать слоями, но попробовав понял что так проще и лучше (при изминенни дизайна, нам надо менять только файлы css, а не весь код страницы)

Screw

02.04.2007

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

Читатель (Мас)

10.04.2007

В?рстка слоями -- геморой. Используйте таблицы + слои!

Саuua

07.06.2007

Глядящие. Есть книго. написал или перевел ее Божко(фамили? такой). издательство кудиц. Цвет зеленоватый такой. Название - DREAMWEAVER MX.Базовый курс. Очень рекомендую, написано очень понятно. никакой тафталогии. книга отличная. АТВИЧАЮ.

AleksM

17.07.2007

Граждане РФ, не коверкайте русский язык - пишите грамотно!

Ольга

19.08.2007

Влад, подскажите пожалуйста: я делаю сайт с двумя колонками (одна колонка 20%, другая 80%), правильно ли будет, если все дивы я буду вкладывать в один большой контейнер, т.е. то, что для левой колонки - в левую, а для правой в правую. Хочу понять плохо это или нормально, когда один див используется в качестве большого контейнера, ведь по аналогии с таблицами так делать нельзя (т. е. использовать одну большую таблицу). Спасибо за книгу "Ускорение работы сайта".

Влад Мержевич

23.08.2007

Да, Ольга, это корректно.

LifeWint

25.08.2007

Ольга: а с какого такого перепугу нельзя использовать Одну большую таблицу? Можно и даже на ура! (вернее таблицу состоящую из 1-й ячейки)

P.S. хотя я уже перешел на слои. В общем мне лагко это было сделать ибо с таблицами я поступал примерно так-же как и со слоями (т.е. Вложения одной в другую, компановка и т.д.)

P.P.S. Сайт действительно содержательный. Спасибо автору за контент. (вопрос: если сайт не статический, то почему нельзя реализовать поиск сразу по сайту без посредников типа Гугл?, хотя и так можно искать, но ищу я часто по этому сайту и это приводит к неокторым неудобствам)

Ольга

28.08.2007

Влад, спасибо.
LifeWint, таблицу одну можно использовать, но насколько я понимаю, если в не? вс? поместить - она грузиться будет долго, поэтому я раньше делила все на несколько основных таблиц, да и внутри этих основных старалась делать меньше вложенных таблиц, насколько это было возможно. Может, я что-то недопонимала?smile

LifeWint

03.09.2007

Ну если все-же делать верстку таблицами то желательно конеуно все делать структурированно начиная с самой большой таблицы, заканчивая вложенными мелкими, но (!) сам алгоритм работы броузера с таблицами сильно замедляет загрузку страниц, содержащих оных. Таким образом "СЛОЕВАЯ" в?рстка ускоряет загрузку страниц. Хотя без них порой не обойдешься (но никак не для верстки, а только для контента табличной формы).

nonlinear

29.10.2007

Отлично, просто отлично!
Большое спасибо за хорошее обьяснение.

Виктор

09.02.2008

А мне без разницы, чем верстать - и слоями делаю, и таблицами.
Зависит от задачи, но обычно делаю шапка в слой, контент - таблица и низ - снова слой, в итоге - мне очень легко провести любые изменения идизайн не "поплывет" при любых, даже очень глобальных изменениях

roman

01.03.2008

почему в ие 6 белые полоси остаються http://international.org.ua/3i/main.html\
???
как справиться с этой проблемой?
boojaka@gmail.com

leah

08.03.2008

Слоями не всегда можно работать. Увы.
Мы делаем дизайн страниц, которые должны также отображаться и на STB (Set-top-box). Там сильно урезанный CSS, который не обеспечивает работу со слоями в полном объеме и не позволяет делать на них верстку, да и резиновый дизайн делать на слоях очень трудно. Но в остальных случаях слои сильно помогают.

Skyter

13.03.2008

вечный спор ни очем... надо совмещать в зависимости от задач...

Роман

15.03.2008

привет, делаю сайт, в?рстка слоями, но как решить проблему:каждый слой привязывается к предыдущему, не зависимо от того какие параметры используются ( absolute; relative;... ) и так далее, да же без этих параметров! в итоге если начинаешь поправлять какой либо слой, приходиться корректировать последующий и т.д.
Что можно посоветовать в этом случаи,/таблицы применять не хотелось бы/
Вот сайт: www.tigral-k.narod.ru - посоветуйте
И как прописать в коде, чтоб перед http, была картинка???
Спасибо за раннее

Дмитрий

23.05.2008

Сайт просто супер!

Статья тоже отличная, все понятно и доходчиво.
Спасибо Влад!

Михаил

19.06.2008

"С этим фактом либо остается смириться, либо использовать другие методы формирования колонок через слои."

Какие ещ? есть методы формирования колонок через слои?

Добавить комментарий

Имя
Комментарий

Сохранить имя (используется cookie)

Поиск по сайту

Верстка с помощью слоев
Разделы
Теги по теме

DIV
Элемент DIV является блочным элементом и предназначен для выделения фрагмента документа с целью изменения вида содержимого.

TABLE
Элемент TABLE служит контейнером для элементов, определяющих содержимое таблицы. Любая таблица состоит из строк и ячеек, которые задаются с помощью тегов TR и TD.

CSS по теме

float
Определяет, по какой стороне будет выравниваться элемент, при этом остальные элементы будут обтекать его с других сторон.

Copyright 2002–2008 Влад Мержевич, по всем вопросам пишите по адресу: vlad@htmlbook.ru

О сайте | Планы на будущее | Использование сайта | Борьба с ошибками | Технологии | Поддержать проект