Главная Веб-программинг CSS


Как верстать на DIV-ах? Основы блочной верстки

Печать E-mail
Автор Administrator   
30.09.2009 г.
Оглавление
Как верстать на DIV-ах? Основы блочной верстки
Верстка 2-х колонок с подвалом
Верстка в 3 колонки

Рейтинг 3.6/5 (27 голосов)

Все уже наверное слышали, что сейчас очень популярной стала блочная верстка сайтов или, как ее еще называют, верстка на DIV-ах. Большинство современных сайтов строятся именно по этой технологии. Суть ее заключается в том, что базовый каркас (шаблон) страницы формируется из блоков, в качестве которых выступает html тег  DIV . С помощью стилей эти блоки позиционируются на странице определенным образом, формируя каркас, который уже затем наполняют содержимым. 
 
В этой статье я хочу рассказать о преимуществе блочной HTML или XHTML верстки над версткой таблицами и привести конкретные примеры блочной верстки самых распространенных моделей web-страниц.

Недостатки табличной верстки

1. Web-стандарты. Используя табличную верстку невозможно сверстать более или менее серьезный макет, который бы не содержал синтаксических ошибок в коде.
2. Семантика. Таблицы были введены в HTML исключительно для облегчения представления табличной информации (прайс лист и т. д.), но поскольку в спецификации HTML 3.2 не было каких-либо других способов позиционирования элементов на странице, тогдашние web-мастера использовали таблицы для разметки страницы на блоки (меню, шапка, подвал и т. д.).
3. Нелогичность поведения таблиц. Если вы верстали или верстаете таблицами, то наверняка сталкивались с нелогичностью поведения таблиц в сложных макетах и разных браузерах. Это связано с тем, что таблицы не предназначены для верстки и с тем, что большинство браузеров отрисовывают страницы с табличной версткой в кварк режиме, а этот режим у всех браузеров разный.
4. Читабельность кода и редизайн. Вы когда-нибудь пробовали разобраться в коде чужого сайта, сверстанного таблицами — наверное это было нелегко. А внести какие-либо серьезные изменения в дизайн иногда вообще невозможно, легче сверстать все заново.
5. Размер кода. В подавляющем большинстве случаев верстка таблицами значительно увеличивает код страницы по сравнению с блочной версткой.

Таким образом, мы выяснили, что табличная верстка это не только вчерашний день, но и много проблем для верстальщика и пользователя.

Примеры резиновых блочных версток

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

Сразу отмечу, что для соответствия стандартам и избежания проблем с браузерами семейства Internet Explorer, обязательно использовать правильный DOCTYPE (тег, объявляющий версию и тип языка разметки). Вот несколько примеров:

1. — HTML версии 4.01 переходный.
2. — HTML версии 4.01 строгий.
3. — XHTML версии 1.0 строгий.

Вы можете использовать тот стандарт, который вам подходит. Это не повлияет на качество верстки, а я в своих примерах буду использовать XHTML 1.0.
Буква «Г»

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

1. Header (шапка). Тянется по горизонтали, но не менее 600 px, высота 150 px.
2. Menu (меню). Тянется по вертикали и всегда такой же высоты, как блок info, ширина 250 px.
3. Info (информация). Тянется по вертикали и горизонтали, но не уже 350 px.

Подготовим XHTML код нашей страницы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>Пример</title>
</head>
<body>
<div id="header">HEADER (шапка)</div>
<div id="menu">MENU (меню)</div>
<div id="info">INFO (информация)</div>
</body>
</html>

Теперь напишем стили для блоков:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>Пример</title>
<style type="text/css">
  html,body{
      margin:0;
    padding:0
    }
  /* убираем отступ у тега body */

  #header{
      height:150px;
    min-width:600px;
    background:#FFEF97
    }
  /* высота 150 px, минимальная ширина 600 px, цвет фона */

  #menu{
      width:250px;
    float:left;
    background:#FFC597
    }
  /* ширина 250 px, этот блок обтекает с левой стороны
    следующий блок, цвет фона */

  #info{
      min-width:350px;
    margin-left:250px
    }
   /* минимальная ширина 350 px, отступ слева 250 px */
</style>
</head>
<body>
<div id="header">HEADER (шапка)</div>
<div id="menu">MENU (меню)</div>
<div id="info">INFO (информация)</div>
</body>
</html>

Вот в принципе и все. Но мы столкнулись с несколькими проблемами. Будем решать их последовательно:

1. Браузеры семейства Internet Explorer 6 не понимают свойство CSS min-width, которое задает минимальный размер блочного элемента. Решается это следующим CSS хаком — следует создать еще один контейнер, в который поместить все содержимое тега body, и написать для него следующие стили
— {width: expression(((document.documentElement.clientWidth || document.body.clientWidth) < 600)? "600px" : "100%")}.

2. Блок MENU не тянется по вертикали, занимая все оставшееся пространство, а растягивается контентом. Решить в лоб эту проблему нельзя, но можно создать видимость решения. Для этого следует создать изображение такого же цвета, что и цвет фона меню, и такого же размера по горизонтали. Задать его в качестве фона тега body и заставить размножаться фоновое изображение только по вертикали
— html,body{margin:0; padding:0; background:url(bg-menu.gif); background-repeat:repeat-y}.

Для избежания появления нежелательных отступов между блоками MENU и INFO в браузерах семейства Internet Explorer не задавайте вертикальные размеры этим блокам.
О прелестях CSS

 


 

 

Похожие темы

 

Комментарии  

 
#1 Прохожий 2010-02-22 17:12 Отличный урок Цитировать
 
 
#2 Незнай. 2010-03-26 05:28 Урок так себе.
Меня аот что интерисует:
Как можно чтоб блок MENU тянулся по вертикали а не только чтоб создавали в идимость.
Цитировать
 
 
#3 Смотритель 2010-03-26 22:38 Хорошо написано. Четко и ничего лишнего. Цитировать
 
 
#4 User 2010-06-30 09:43 Цитирую Незнай.:
Урок так себе.
Меня аот что интерисует:
Как можно чтоб блок MENU тянулся по вертикали а не только чтоб создавали в идимость.

элементарный пример:

Цитировать
 
 
#5 Santorin 2011-07-12 04:59 Здравствуйте!

А если нужно кнопки счетчиков по центру страницы разместить, а не как им вздумается? Что и где прописать?!
Цитировать
 
 
#6 Bizmatek 2012-04-15 05:35 статья про блочную верстку неплоха, только если блоки так хороши, то почему страница сверстана на таблицах?:) Цитировать
 

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

Вы можете добавлять комментарии, относящиеся к данной теме. Регистрироваться при этом необязательно.


Защитный код
Обновить


Rambler's Top100