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

Фиксированный дизайн. Основы

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

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

Термин «фиксированный дизайн» используется для обозначения макета страницы, который создается на основе слоев заданной ширины. Выбор ширины зависит от ориентации на определенное разрешение монитора пользователей. Так, для разрешения 640х480 пикселей размер таблицы следует брать не более 619 пикселей. Такая ширина получается за счет вычитания из значения 640 ширины вертикальной полосы прокрутки и границ окна браузера. Для всех пользователей, сайт, построенный на таком макете, будет отображаться корректно, но при больших разрешениях оказывается слишком много пустого места. Поскольку наиболее популярным среди пользователей Интернета является разрешение 800x600, разработчики сайтов ориентируются именно на него и используют общую ширину слоев 700-770 пикселей. И хотя тенденция идет в сторону увеличения разрешения, появление наладонных компьютеров, у которых количество пикселей как раз составляет 640х480, говорит о возврате на тот же этап.

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

Рис. 1

Рис. 1. Типичная модульная сетка при фиксированном дизайне

Числовые обозначения, используемые в данном рисунке: 1 — заголовок сайта; 2 — левый слой, обычно содержит элементы навигации; 3 — правый слой, содержит информационное наполнение страницы; 4 — «подвал», самый низ веб-страницы, в нем, как правило, размещают контактную информацию и различные кнопки.

Для создания макета показанного на рис. 1, следует продумать некоторые предварительные моменты — какова будет общая ширина всех элементов; где будет размещаться макет — по центру страницы или у левого края; какие цвета и шрифты будут использоваться и т.д. Шаги, которые предстоит сделать перед написанием кода, описаны далее.

Ширина слоев

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

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

Высота слоев

Высота слоя меняется динамически в зависимости от его содержимого. Если хочется установить высоту слоя самостоятельно, можно воспользоваться параметром height и задать высоту в пикселах, процентах или других единицах CSS. Учтите, что при таком подходе выравнивание содержимого слоя происходит всегда по его верхнему краю, поэтому слишком большую высоту задавать не стоит (пример 1).

Пример 1. Задание высоты слоя

<style type="text/css">
#top {
 text-align: left; /* Выравнивание по левому краю */
 width: 750px; /* Ширина слоя */
 background: #800000; /* Цвет фона */
 height: 50px; /* Высота слоя */
}
</style>

Аналогично, высоту слоя можно менять и отступами, изменяя значение padding-top и padding-bottom (пример 2). Но этот способ менее универсальный.

Пример 2. Задание высоты слоя с помощью отступов

<style type="text/css">
#top {
 padding-top: 15px; /* Отступ сверху */
 padding-bottom: 15px; /* Отступ снизу */
}
</style>

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

Замечание

Если высота содержимого слоя превышает его высоту, заданную с помощью параметра height, то браузер Firefox оставляет размеры слоя неизменными, а содержимое накладывает поверх него.

Выравнивание по центру

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

Пример 3. Выравнивание по центру в Firefox

<style type="text/css">
#container {
 width: 750px; /* Ширина слоя */
 margin-right: auto; /* Отступ справа */
 margin-left: auto; /* Отступ слева */
}
</style>

Параметры margin-right и margin-left со значением auto задают выравнивание слоя по центру веб-страницы. В этом же селекторе указываем и общую ширину всех слоев.

Выравнивание макета веб-страницы по правому края, как правило, никогда не делается — используется выравнивание либо по центру, либо по левому краю.

Отступы на веб-странице

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

Отступы задаются параметрами CSS margin и padding для селектора BODY. Наличия двух атрибутов вместо одного, опять же требуют интересы разных браузеров, margin — Internet Explorer, а padding — Opera и Firefox. Совмещение разных параметров гарантирует, что показываться веб-страница в разных браузерах будет одинаково.

Управлять отдельными отступами от разных краев экрана можно с помощью параметров margin-top, margin-bottom, margin-right и margin-left, которые соответственно изменяют расстояние от верхнего, нижнего, правого и левого краев окна браузера. Прежде чем их использовать, следует задать нулевое значение параметра margin (пример 4).

Пример 4. Изменение верхнего отступа от края браузера

<style type="text/css">
BODY {
 margin: 0; /* Убираем отступы */
 margin-top: 10px /* Устанавливаем отступ сверху */
}
</style>

Цвета

CSS имеет несколько опций для определения цвета текста и фона слоя. Параметр color указывает цвет текста в слое, а background — цвет фона (пример 5).

Пример 5. Изменение цвета

<style type="text/css">
#menu {
 color: white; /* Цвет текста */
 background: #008080 /* Цвет фона */
}
</style>

Цвет фона для слоя menu в примере указан темно-зеленым, а текста — белым.

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

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

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

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

Костя

21.08.2006

Очень интересно. Но отмечу следующую вещь: на данный момент наиболее популярным является разрешение 1024x768, а не 800х600.

Вот например статистика:
liveinternet.ru/stat/ru/resolutions.html

Тем не менее, автору респект.

Chaklun

14.09.2006

Опять вернулись к text-align, а почему не использовать параметр align для DIV, чтобы выставить блок по центру?

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

15.09.2006

Можно и через align, но с помощью стилей удобнее.

alx812

25.09.2006

При использовании для body text-align: center отч?т координат для вложенного div в IE 6.0 начинается с центра, а в мозиле (1.4.1) с верхнего левого края родителя (как должно быть).Так что приходится для всех блоков уточнять text-align если охота правильно задать координаты относительно родителя.

Стас

12.11.2006

Влад, сделал слой по центру width:70% и margin-left:15%
margin-right: 15% должно быть по центру, а перекашивает в лево, почему?
И еще вопрос. Вот этот центральный слой должен быть одного цвета, а background всего остального т.е бортов - другой! Как сделать, не получается.

Стас

12.11.2006

Все, разобрался с этим сам! теперь другая проблема: по вертикали отступ не уберается..
margin-top: 0px; не фунциклирует.. как быть?

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

13.11.2006

Стас, надо смотреть вложения слоев. Для одного слоя верхний отступ может быть задан как 0, а для внутреннего иметь значения. Также посмотри, может у тебя где-то margin-bottom присутствует, для слоев повыше.

lexus

05.02.2007

Такая глупая проблема: в css-файле прописано, как указано здесь
BODY {
text-align: center;*/
}

#container {
margin-right: auto;
margin-left: auto;
}
На локальной машине юзаю IE7. Так в чем проблема: при первой загрузке страницы и обновлениям по F5/Ctrl+F5 содержимое центрируется без проблем. Но при клике по любой ссылке на странице содержимое съезжает влево, как будто center никакого нет. Обновляю - по центру. Клик по ссылке - съезжает. (В Опере и ФФ, естественно, без проблем)...

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

07.02.2007

IE7 требует полный строгий DOCTYPE, поставь его и проверь страницу еще раз.

dr. Zverev

06.04.2007

К стате жудко интересно, нет ли не укого описания !DOCTYPE ?
Свитки м?ртвого моря прочитал, Мастера и Маргариту прочитал, Даже библию полистал... а что такое !DICTYPE вроде знаю, но вот побороть его не могу. Помогите плыззз!

dr. Zverev

06.04.2007

Напишите плиз в мыльницу? archmad@inbox.ru

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

09.04.2007

Про DOCTYPE читать здесь.
http://www.w3.org/TR/html401/struct/global.html#h-7.2

Yurgen

17.05.2007

кстати, если хочется сделать div "во всю высоту экрана" то код аля
<body>
<div style="width:800px; height:100%; background-color:red "> content
</div>
</body>
не сработает в IE. - будет лишь узенькая красная полоска в верхней части экрана. А если хочется чтобы во всю высоту экрана, то нужно у селектора body указать height=100%

t3s

11.09.2007

во-первых, спасибо за сайт - инфа действительно очень удобно подана
во-вторых, Влад, хочу спросить Вашего совета
есть код:
/*scc*/
#opys {
position: absolute;
margin: 0.5em 0px 1em;
float: left;
width: 600px;
left: 0px;
top: 320px;
background: #f3efc6;
}

// php
<div id="opys">
<p>
<? print $opys; ?>
</p>
</div>
получается горизонтальный скроллинг, причем только в файрвоксе
проблема появляется тогда, когда переменная $opys имеет очень длинную строку без пробелов(например ссылку вида http://localhost/forum/show_topic_t.php?id_topic=1168164298&amptitle=%CF%F0%EE%EE%E1%F0%E0%E7)
первое что пришло в голову - проверить длинну переменной и при необходимости вставлять пробел (знаю форум, на котором так и поступили)
а есть ли более изящный вариант? можно ли как-то уговорить файрвокс придерживаться указанных параметров?

Давид

23.09.2007

Спасибо Вам Влад!!!

Алексей

15.01.2008

у меня не работает этот кусок кода пример которого привел Yurgen, в браузере Firefox2.11 отображается только строка красного цвета, но никак div не растягивается на всю страницу, почему?
<body>
<div style="width:800px; height:100%; background-color:red "> content
</div>
</body>

shopox

06.02.2008

t3s, а к чему совмещение position:absolute и float:left ?
и эта самое...
overflow:visible для фф прокатит

гадкий

08.04.2008

народ, тут такое дело скверное получаятся.....
в общем нужно разместить картинку (1150х189рх) шириной во весь экран, но так, что бы присворачивании окна до ее радных размеров и менее она не уменьшалась, а оставалась бы такой же+горизоннтальная плолоса прокрутки.
.img1 {
position:relative;
padding:0; margin:0;
width:100%;
height:189px; min-width:1150px;
}
мазила обрабатывает коректно а ИЕ нет
мб кто нить что нить подаскажет?!

Navigator

18.05.2008

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

Navigator

18.05.2008

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

Navigator

18.05.2008

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

loly

10.06.2008

2 гадкий

IE min-width не понимает.
Если это дествительно необходимо - помести рисунок в контейнер и в этот контейнер параллельно добавь распорку (div или таблицу) нулевой высоты и фиксированной ширины 1150px, для рисунка оставь только width:100%;

AzaLeo

20.07.2008

Спасибо за столь информативный ресурс. Многие вещи я не знал до его прочтения.
Небольшой нюанс:
Как упоминалось выше, этот параметр определяет сам дизайнер, на основе предварительного сбора данных о будущих пользователях сайта.
Немного не понятно, как можно собрать данные о будущих посетителях сайта? Мне кажется, что ширину макета необходимо устанавливать исходя из минимального значения разрешения экрана. Хотя таких разрешений уже достаточно мало, но все же они встречаются.

Tihonko

25.07.2008

У меня происходит вот что: я ставля ширину "контейнера"(т.е. того слоя, который содержит все остальные) 700 пикселов, ширину левой колонки - 200, правой - 500, для обоих колоник выставляю float: left. Колонки располагаются друг под другом. Постепенно увеличиваю ширину контейнера. При 768 пикселах слои начинают располагаться горизонтально. Т.е. 68 пикселов по бокам между "контейнером" и колонками не используются. Как с этим бороться, кто подскажет?

Tihonko

25.07.2008

Забыл добавить, необходимо, чтобы выравнивание было по центру

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

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

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

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

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

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

STYLE
Тег STYLE применяется для определения стилей элементов веб-страницы.

CSS по теме

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

color
Определяет цвет текста элемента.

height
Устанавливает высоту блочных или заменяемых элементов (к ним, например, относится тег IMG. Высота не включает толщину границ вокруг элемента, значение отступов и полей.

margin
Устанавливает величину отступа от каждого края элемента. Отступом является пространство от границы текущего элемента до внутренней границы его родительского элемента.

margin-left
Устанавливает величину отступа от левого края элемента.

margin-right
Задает величину отступа от правого края элемента.

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

padding-bottom
Устанавливает значение поля от нижнего края содержимого элемента.

padding-top
Задает величину поля от верхнего края содержимого элемента.

text-align
Определяет горизонтальное выравнивание текста в пределах элемента.

width
Устанавливает ширину блочных или заменяемых элементов. Ширина не включает толщину границ вокруг элемента, значение отступов и полей.

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

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