Переходим с TABLE’ичной верстки на DIV’овую

24 января 2007 г.

Тема сегодняшнего поста является весьма актуальной как для рядовых веб-мастеров, так и для веб-мастеров с СЕОшным уклоном. Более того, поскольку верстка сайтов с недавнего времени для меня является основным родом деятельности, то это и моя самая любимая тема.

О том и поговорим.

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

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

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

То, что расположено в таблице:

1
2
3
4
5
<table>
  <tr>
    <td>текст</td>
  </tr>
</table>

может быть представлено в виде блочной (дивовой) верстки:

1
<div>текст</div>

, и это занимает гораздо меньший объем дискового пространства.

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

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

Вот какие преимущества я вижу блочной верстки по сравнению с табличной:

  • Существенное уменьшение размера страницы, как правило в 2–3 раза (в зависимости от сложности структуры страниц), что значительно уменьшает время загрузки веб-сайта. При этом незначительно вырастет размер CSS-файла, но, благодаря тому, что он единожды кэшируется браузером юзера и при обращении к другим страницам считывается уже с его компьютера, в результате сайт грузится гораздо быстрее, чем табличный.
  • Снижение общемирового интернет-трафика. Следствие 1-го пункта.
  • Снижение нагрузки на сервер. Опять же следствие 1-го пункта.
  • Значительно удобнее менять оформление страниц сайта, вынесенное в CSS-файл. При этом практически отсутствует необходимость редактирования HTML-кода.
  • Легкость манипулирования элементами сайта. Любой SEO-специалист подтвердит, что чем выше контент страницы располагается в HTML-коде, тем боле значима такая страница с точки зрения поисковой оптимизации. Поисковые системы отдадут больше респекта такой странице и быстрее проиндексируют ее.

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

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

Умение верстать дивами базируется на знании технологии CSS. Т.е. если Вы хорошо владеете таблицами каскадных стилей, то с уверенностью могу сказать, что очень легко перестроитесь на блочную верстку.

Теперь непосредственно к практике.

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

Итак, вот какие источники я посоветую. Полезно будет изучить тем, кто хочет перейти на DIV’ы и развить свои навыки в CSS.

  • Webmascon – Наверное, самый популярный сайт по теме. Жаль только, что он больше не обновляется. Кроме всего прочего, на сайте размещены несколько глав из книг Михаила Дубакова «Создание Web-страниц. Искусство верстки» и «Веб-мастеринг средствами CSS», которых я, к сожеланию, нигде найти не мог (хочется почитать). Очень рекомендую этот сайт!
  • Библиотека Сайтостроительства – Достаточно много как теоретической, так и практической информации, изложенной простым языком. Рекомендую!
  • Заметки HTML кодера – есть много интересных примеров применения CSS.
  • Tigir.com о web-технологиях – тоже есть интересные примеры.
  • CSSing – Блог про CSS и все что с этим связано. Новые приемы и технологии и т д.
  • htmlbook.ru – Учебники по HTML, CSS, дизайну, графике и созданию сайтов.
  • Дэйв Ши, Молли Хольцшлаг. «Философия CSS-дизайна» – В этой книге на примере широко известного сайта CSS Zen Garden рассматривается применение каскадных таблиц стилей. Здесь нашли отражение такие вопросы, как подготовка HTML-разметки для последующего применения стилей, синтаксис языка CSS, принципы верстки, методы работы с графикой, особенности использования цвета, типографские эффекты и многое другое. Не осталась без внимания проблема неодинакового уровня поддержки CSS разными браузерами; авторы рассказывают о приемах, с помощью которых можно добиться межбраузерной совместимости.

    Как заявляют авторы, книга не является учебником по CSS, но представляет несомненный интерес для различных категорий пользователей: от новичков до маститых профессионалов.

    «Философию CSS-дизайна» можно скачать в Интернете в формате PDF (23 Mb). Однако качество сканирования на удовлетворительном уровнем, поэтому изучать ее в таком форме совсем неудобно. Именно по этой причине я купил реальную книгу в Интернете, чего и Вам советую, если проявите интерес.

  • Layout Gala – примеры вариантов верстки дивами. Есть множество решений, как для страниц с фиксированной шириной блоков, так и для процентной.
  • Генератор HTML+CSS шаблонов – Web 2.0 сервис, одним из создателей которого является автор этого блога. Данный инструмент в соответствии с выбранными параметрами генерирует 2 файла: CSS и HTML, которые представляют базовую основу (каркас) для будущего сайта. Большинство выдаваемых сервисом вариантов основано на структуре макетов вышеуказанного сайта Layout Gala, но они лишены одного бага, который присутствует в макетах Layout Gala.
  • Учебник по CSS-верстке – систематизированный список популярных статей для быстрого освоения принципов CSS-верстки. Рассчитано на специалистов, имеющих опыт веб-разработки.

Вот еще несколько книг, которые мне рекомендовали к прочтению в одном из дискуссионных листов Subscribe.Ru:

  • Джеффри Зельдман. «Web-дизайн по стандартам.» (общие вопросы проблематики современной верстки, исторический экскурс)
  • Дэн Седерхольм. «Пуленепробиваемый web-дизайн.» (сугубо практика и трюки)
  • Эрик Мейер. «CSS-каскадные таблицы стилей. Подробное руководство.» (говорят, что это просто библия!)

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

В отдельной статье, которая периодически обновляется, я собрал хаки для разных современных интернет-браузеров: Персональные CSS-хаки для Internet Explorer, Opera, FireFox, Safari, Google Chrome.

С опытом CSS-верстки количество используемых хаков Вы сведете к минимуму. И всегда стремитесь к тому, чтобы обходиться без них совсем, т.к. по сути CSS-хаки - это зло.

Также хочу обратить внимание на следующее свойство, которое требуется для задания минимальной ширины страницы при блочной верстке, чтобы при сужении браузера, информация не съезжала в кучу (если ширина страницы “резиновая”):

1
2
3
4
#wrapper {
  width: expression((documentElement.clientWidth||document.body.clientWidth)<1000?'1000px':''); /* Internet Explorer <= 6.0 */
  min-width: 1000px; /* Opera & FireFox & Safari & Google Chrome & Internet Explorer 7+ */
}

На этом пока все.

Теги: , , автор: Dimox | рубрика CSS-верстка

Комментарии (90): »

  1. Господа, вы забыли упомянуть одну из важнейших (на мой взгляд) особенностей табличной верстки: чтобы отобразить таблицу с содержимым, браузеру надо сначала загрузить ВСЁ её содержимое. Поэтому типичное поведение насыщенного графикой и наворотами табличного сайта для пользователя с dial-up’ом (да-да, таких в России весьма немало на сегодняшний день!) - это показ в течении 1-2-3 минут абсолютно пустой страницы. Значительная часть их просто не дожидается и уходит. А блоки можно расположить сверху вниз по значимости и посетитель сразу увидит основной контент, попозже загрузится меню, и в последнюю очередь - всякие украшательства…

  2. Спасибо за дополнение. Действительно, забыл про это.

  3. P.S. раз уж коммент оказался полезным…

    Доводилось видеть такое: старается человек, делает совершенно грамотную вёрстку, а в последний момент вставляет всё в “одну-единственную” простую таблицу из двух строк (”чтобы подвал к низу прижать…”). И всё. Этим напрочь убиваются все преимущества от правильной вёрстки.

  4. Некоторые возможности таблиц, например увязывать размеры одних элементов с размерами др. элементов, достаточно востребованны для верстки. Имеет ли смысл эмулировать данные уникальные свойства с помощью блочной верстки?
    На мой взгляд , нет.
    Страдает визуальная прозрачность кода, которая указывалась, как преимущество блочной верстки. Естественно и времени на создание страницы требуется больше.
    Приведу пример.
    Я знаю, что Вы ,Dimox, работали над проблемой эмуляции одинаковой высоты колонок. Было представлено довольно интересное и нетривиальное решение. Я не сразу понял, что вы использовали большие отступы и границы, в качестве подложки для сайдбаров. Не сомневаюсь , что решение станет еще более интересным, если колонок будет больше.
    Сверстать таблицей намного проще, быстрее и доступнее для понимания.
    Из всего вышеизложенного не следует, что я являюсь противником блочной верстки, просто, по-моему не стоит так рьяно открещиваться от верстки с помощью таблиц.

  5. У дивов есть свойство разъезжаться и разваливаться.
    Например у меня на сайте всё в дивах. Но правая колонка зачастую ломается и съезжает вниз под комментарии(обычно это из-за не закрытой цитаты на верно или большой картинки)
    Может кто-то знает как избежать этого?

    Кстати если убрать или добавить у меня в html закрывающий или открывающий див, то сайт весь развалиться в прямой смысле.

  6. Спасибо за генератор! Не знал что такие есть, оказалось это то что мне нужно!

  7. С точки зрения веб-бизнеса коммерческих сайтов с CMS - вёрстка div ами убыток чистой воды, нужно иметь верстальщика ну очень выского уровня чтобы не было столько косяков сколько их при вёрстки div ами. В нашей компании запрещено верстатть исключительно div ами. Нужно верстать и div ами и таблицами - всё должно быть оптимально. Все косяки какие были связаны с вёрсткой сайтов за 5 лет, связаны именно с вёрсткой div. Причем если ошибка в табличной верстки - то визуально она небольшая, а если ошибка в div то - весь сайт съезжает. Для коммерческих сайтов, где работать могут несколько человек - верстка div ами - это убыток.

    @
  8. Чтобы подвал к низу прижать:

    1
    2
    3
    4
    5
    footer {
        position: fixed;
        height: 10%;
        top: 90%;
    }
  9. Совершенно согласен Максом. Самый оптимальный вариант с точки зрения бизнеса - общая табличная верстка с применением div’ов для задач сео (вынос контента вверх кода) и “извратов” дизайна, когда дизайнер рисует “красотищу” и его не ипет, как это потом верстать. Когда в работе параллельно штук 5 сайтов + штук 40-50 на поддержке - извращаться в дивами ради непонятной “красоты кода”…

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <html>
    <head>
    <title>$TITLE$</title>
    </head>
    <body>
    <div id="contanier">
     <div id="wrap">
      <div id="topPick">
     <div id="dataBar">
     <div id="rssBlock">$RSS_LINK$</div>
    </div>
     <div id="sidebar">
     <div class="menuTable">$SITE_MENU$</div>
     </div>
     <div id="content">
     <div id="logo">$SITE_LOGO$</div>
     <div id="textBlock">$BODY$ </div>
     </div>
     <div id="footer">$POWERED_BY$</div>
     </div>
     </div>
    </div>
    </body>
    </html>

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

    Мне самому нравятся дивы за то, что гораздо проще позволяют сделать некоторые дизайнерские задумки, скриптовые меню и другие красоты современного инета. Но весь сайт на дивах? И потом ждать с ужасом в какой момент тебе позвонит заказчик и скажет, что у его папы дома на ие4 или 5 сайт весь расколбасило. И заказчику не скажешь, как делают многие “крутые” сайтостроители: “Сайт для просмотра в (список последних браузеров), всем поклонникам ie4,5,6 (иногда умудряются в список добавлять даже нетскейп) идти лесом”. Или нанимать отдельного человека, чтобы он сидел и тупо тестировал сайты на всех доступных браузерах…

    Но как можно рекламировать то, для чего требуется держать в голове кучу особенностей и знать хаки для всех браузеров. ИМХО, всегда нудно стремиться к золотой середине. И стремление верстать только дивами так же попахивает в данной ситуации безумством, как и вертска таблицами без css (я таких идиотов еще не видел, чтобы не использовали стили).

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

    @
  11. Вот-вот. У меня в последнее время именно такие “умные” клиенты и попадаются. Причем считают верстку дивами “прогрессивной технологией” :). Особенно мне “нравится”, когда просят такую верстку, да чтоб работала на самых старых браузерах. Плюс учесть возможность того, что у юзверя могут быть отключены яваскрипты.

  12. Полный бред! ВСЕ повторяю для Апачи(индейцев) ВСЕ браузеры умеют рисовать таблицы по мере загрузки. Добро пожаловать в будущее господа СТАРпёры.
    DIV - это не плохо, но только полнейший ЛАМО может сказать “Онли DIV фаревор”.
    Таблицы проектировать ПРОЩЕ чем рассчитывать ДИВы! Сдишь с линейкой и вымеряешь миллиметры..
    Да и про вертикальное выравнивание забыли написать? а? в IE супергеморойно через дивы делается вертикальное выравнивание. В некоторых случаях DIV отображается непредсказуемо, в разных браузерах по разному! Таблицы на этом фоне более крассбраузерны, более талерантны!

  13. 73
    Унылокакто
    Унылокакто

    ну и где статья?
    вы прям как К.О. рассказали самое очевидное и накидали непрямых ссылок(нетематических)
    странно что вашу страницу выдало в гугле одной из первых =(

  14. 74
    Невский Александр Рашидович
    Невский Александр Рашидович

    Все проще верстать таблицами, а дивами интереснее, интересно что нам приготовит HTML5

  15. тем кто любит таблицы скажу: “div’овая вёрстка превосходит таблицы по многим параметрам, если у Вас, что-то расползается, не нужно грешить всё на div’ы . В первую очередь нужно иметь достаточно знаний и “прямые” руки. Кстати, div’ы применяются на сайте Консорциума Всемирной Паутины и на перечне других авторитетных сайтов!

  16. Господа, всем реальное спасибо за мнения! Комменты меня очень просветили и порадовали. Я давно не занимался версткой, но назрел вопрос новой домашней странички, который хотел решить только новомодными технологиями, а именно - исключительно на дивах.
    Прочитав весь тред, я передумал. Попытаюсь делать комбайн с моими любимыми таблицами.
    Таблицы - проще некуда, любое выравнивание, позиционирование; а в дивы втыкаю третий день (4 способа раскладки) и все равно еще не до конца въехал :)
    Интересно, а сайт на одних таблицах (с цсс, конечно) - это совсем вчерашний день? Домашка из 10-20 страничек.

    @
  17. Вот пример моего сайта про сноубординг, сверстанного исключительно таблицами, кроме разве некоторых скриптовых слайдеров и прочих извратов. Посещаемость - 2000, по тематическим запросам - процентов 80 на первой странице в гугле и яндексе. А что нам еще для счастья надо.

    @
  18. Такая вёрстка сайта, на мой взгляд, больше нравится ПС. Спасибо.

  19. Да, на div код и кажется проше, но когда я в своем случае строел таблицы - насмучался. Проблема постояно с переносами на новые строки - то они сами сдвигаются то надо подгонять

  20. Мы на бизнес сайтах используем только табличную верстку для нарезки дизайна. Дивы это всегда бессмысленный геморрой. Поисковики прекрасно работают с любой версткой, это 21 век. Вы не сделаете элементарное задание на дивах которое я сверстаю на таблице за 5 минут.

    @
  21. Да, да, все это конечно верно, но так может высказываться полный ламо, ничего не смыслящий в верстке дивами, да и вообще, мне кажется в верстке.
    Знания и опыт побеждают все ваши вертикальные выравнивания и непредсказуемое поведение блоков в разных браузерах, ага :)
    Хотя я сам не вижу ничего зазорного в использовании таблиц, но только там, где это оправдано.

    @
  22. В точку, согласен с вами, коллега.

    @
  23. Html 5 вполне себе поддерживает таблицы, от них вряд ли откажутся. Лучше б пофиксили все чтоб все браузеры показывали сайты одинаково.

    @
  24. 85
    верстатель
    верстатель

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

    1
    <div id="xxx"></div>

    и таблиц

    1
    <td class="xxx"></td>

    Кто сомневается, попробуйте сверстать две строчки с пятью столбцами общей шириной в 800 пикселей с выравниванием в браузере по центру. И в каждую ячейку вставить по картинке, выдержав отступы между ячейками и внутри них в 5 пикселей и отцентрировать картинки в них по вертикали.
    html код в студию(ксс не стОит, ибо div заведомо в проигрыше)
    А ваши баллады с быстротой загрузки страниц - смех да и только.
    Много ли людей, у которых сейчас dial-up?

    @
  25. div блоками делают лишь некоторые части сайта. полностью верстать сайт блоками долго, а нормальные люди экономят время.

    + таблица красивее и лучше смотрится на сайте…

  26. Штука такая, что на приобретение знаний уходит время (невосполнимый ресурс), и, зачастую, средства. Книжку купить, интернет оплатить. А руки распрямляются от длительной работе на определённом поприще.

    Я тоже программист, и надо понимать, что моё время и средства уходят на реализацию себя этом поприще.

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

    @
  27. Dimox, Ваш оппонент хоть и конфликтно высказался, но совершенно прав указав на Ваш недочёт с “порядками”. Я бы сказал комментирующему “спасибо”, а огреху в статье исправил.

    @
  28. Браузеры никогда не договорятся. Обратите внимание, что стандарта вообще нет. Есть рекомендации. Которых можно придерживаться, а можно не придерживаться.

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

    Да и собственно, развитие возникает благодаря противоречиям.

    @
  29. какой смысл делать дивами когда сайт представляет собой таблицу.
    таблицы и дивы это объекты с разными свойствами, поэтому разговоры о правильности или неправильности той или иной верстки сами по себе неправильны, потому что “правильно” - то что к месту и оптимально реализует решение задачи.

    @
  • Похожие статьи
  • Предыдущие из рубрики