Фиксированный дизайн. Основы
Термин «фиксированный дизайн» используется для обозначения макета страницы, который создается на основе слоев заданной ширины. Выбор ширины зависит от ориентации на определенное разрешение монитора пользователей. Так, для разрешения 640х480 пикселей размер таблицы следует брать не более 619 пикселей. Такая ширина получается за счет вычитания из значения 640 ширины вертикальной полосы прокрутки и границ окна браузера. Для всех пользователей, сайт, построенный на таком макете, будет отображаться корректно, но при больших разрешениях оказывается слишком много пустого места. Поскольку наиболее популярным среди пользователей Интернета является разрешение 800x600, разработчики сайтов ориентируются именно на него и используют общую ширину слоев 700-770 пикселей. И хотя тенденция идет в сторону увеличения разрешения, появление наладонных компьютеров, у которых количество пикселей как раз составляет 640х480, говорит о возврате на тот же этап.
При фиксированном дизайне блок с материалом размещается обычно у левого края или по центру экрана. Последний вариант предпочтительнее, тогда не так заметны широкие поля вокруг при больших разрешениях монитора (рис. 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 |
Прежде, чем писать комментарий к статье, примите во внимание следующие моменты.
- Не задавайте вопросы в комментариях, для этой цели предназначен форум, где вы получите нужную помощь.
- Удаляются любые комментарии, которые:
- включают множество ошибок;
- написаны безграмотно;
- не имеют отношения к данной статье;
- не содержат никакой полезной информации для посетителей.
- Для выделения отдельных слов используйте следующие команды: [b]жирный[/b], [i]курсив[/i], [color=цвет]цветной текст[/color], [tag]тег[/tag], [var]параметр[/var], [code]пример[/code].
- Потренироваться в написании комментариев вы можете в песочнице.
Комментарии к статье
Костя
21.08.2006
Вот например статистика:
liveinternet.ru/stat/ru/resolutions.html
Тем не менее, автору респект.
Chaklun
14.09.2006
Влад Мержевич
15.09.2006
alx812
25.09.2006
Стас
12.11.2006
margin-right: 15% должно быть по центру, а перекашивает в лево, почему?
И еще вопрос. Вот этот центральный слой должен быть одного цвета, а background всего остального т.е бортов - другой! Как сделать, не получается.
Стас
12.11.2006
margin-top: 0px; не фунциклирует.. как быть?
Влад Мержевич
13.11.2006
lexus
05.02.2007
BODY {
text-align: center;*/
}
#container {
margin-right: auto;
margin-left: auto;
}
На локальной машине юзаю IE7. Так в чем проблема: при первой загрузке страницы и обновлениям по F5/Ctrl+F5 содержимое центрируется без проблем. Но при клике по любой ссылке на странице содержимое съезжает влево, как будто center никакого нет. Обновляю - по центру. Клик по ссылке - съезжает. (В Опере и ФФ, естественно, без проблем)...
Влад Мержевич
07.02.2007
dr. Zverev
06.04.2007
Свитки м?ртвого моря прочитал, Мастера и Маргариту прочитал, Даже библию полистал... а что такое !DICTYPE вроде знаю, но вот побороть его не могу. Помогите плыззз!
dr. Zverev
06.04.2007
Влад Мержевич
09.04.2007
http://www.w3.org/TR/html401/struct/global.html#h-7.2
Yurgen
17.05.2007
<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&title=%CF%F0%EE%EE%E1%F0%E0%E7)
первое что пришло в голову - проверить длинну переменной и при необходимости вставлять пробел (знаю форум, на котором так и поступили)
а есть ли более изящный вариант? можно ли как-то уговорить файрвокс придерживаться указанных параметров?
Давид
23.09.2007
Алексей
15.01.2008
<body>
<div style="width:800px; height:100%; background-color:red "> content
</div>
</body>
shopox
06.02.2008
и эта самое...
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
IE min-width не понимает.
Если это дествительно необходимо - помести рисунок в контейнер и в этот контейнер параллельно добавь распорку (div или таблицу) нулевой высоты и фиксированной ширины 1150px, для рисунка оставь только width:100%;
AzaLeo
20.07.2008
Небольшой нюанс:
Как упоминалось выше, этот параметр определяет сам дизайнер, на основе предварительного сбора данных о будущих пользователях сайта.
Немного не понятно, как можно собрать данные о будущих посетителях сайта? Мне кажется, что ширину макета необходимо устанавливать исходя из минимального значения разрешения экрана. Хотя таких разрешений уже достаточно мало, но все же они встречаются.
Tihonko
25.07.2008
Tihonko
25.07.2008
