webew
Войти » Регистрация
 
HTML
CSS

CSS макеты: фиксированные, резиновые, эластичные.

15 мая 2008, 16:24
Автор: Николай Мациевский
Разместил: bur

Примечание: ниже выложен перевод статьи "CSS Layouts: The Fixed. The Fluid. The Elastic.", в качестве русского аналога термина layout используется макет. В статье рассматриваются два вида «резинового» макета, поэтому один из них для различия обозначен как «эластичный». Автор резюмирует основные плюсы и минусы каждого из рассматриваемых макетов (способов верстки).

Какой макет верстки (с использованием Каскадных Таблиц Стилей, CSS) можно считать наилучшим? Каждый из них имеет свои хаки (quirks) и свои уникальные плюсы и минусы. Будет ли один из них более удобен для пользователя, чем все остальные? Насколько просто им будет пользоваться? Какие есть у каждого из них проблемы, и как их обходить? Верстается ли один из них проще всех остальных? Есть ли среди них какой-либо ущербный, совершенно непригодный? Скорее всего, многие однозначно ответят на эти вопросы, но я не буду так торопиться. Каждый из этих макетов мне нравится, и каждый применим в том или ином случае, если делать это с умом и внимательно проверять простоту использования и одинаковую доступность для всех категорий пользователей. Все они являются частью уровня представления (presentational layer) для вебсайта, поэтому большинство вопросов по доступности вытекают из корректного использования семантики и общих правил верстки. Далее я опишу свой взгляд на жестко фиксированный (rigid fixed), адаптивный резиновый (adaptable fluid) и расширяемый эластичный (expandable elastic) макеты.

Макеты с фиксированной шириной

Макет сайта с фиксированной шириной отличается основной областью для содержания (wrapper), ширина которой выставлена в неизменное значение, не зависящее от разрешения экрана пользовательского агента. Наиболее распространенной и разумной считается ширина в 760 пикселей — размер, при котором пользователи мониторов с разрешением 800×600 увидят основное содержание сайта практически во всю ширину экрана, не прибегая к дополнительной горизонтальной прокрутке.

Авторский блог является примером такой верстки, хотя его можно легко привести к резиновому или эластичному макету без изменения текущих картинок.

Плюсы такого макета

Его минусы

Советы по макету с фиксированной шириной

Пример блока фиксированной ширины

Все примеры «вживую» можно посмотреть в авторской статье.

<div style="width:500px; font-weight:bold; text-align:center; color:#c90;
background-color:#f7fbf3; border:1px solid #9c6; margin:0 auto; padding:10px">
	<p>Этот <code>блок</code> имеет фиксированную ширину 500 пикселей. 
	У него нельзя изменить размер, при увеличении текста, он будет заново 
	разбиваться на строки внутри этого блока.</p>

</div>

Резиновые макеты

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

Примером такого макета можут служить GrayBit.com. Он уменьшается по ширине до 755 пикселей до того, как появляется горизонтальная полоса прокрутки, но и при этом она не требуется для просмотра основного содержимого страниц. Фактически, сайт замечательно смотрится вплоть до ширины в 560 пикселей, дальше элементы дизайна уже начинают перекрываться, пропадать или сваливаться вниз. Большинство резиновых макетов имеют такие ограничения и, как я видел, некорректно ведут себя на мобильных устройствах, пока не отключены стили вообще или не применена специальная таблица стилей для мобильных устройств.

Плюсы резинового макета

Рассмотрим минусы такого макета

Некоторые советы по использованию этого макета

И, собственно, пример

<div style="width:74%; font-weight:bold; text-align:center; color:#c90;
background-color:#f7fbf3; border:1px solid #9c6; margin:0 auto; padding:10px">
	<p>Это резиновый <code>блок</code> шириной в 74% от ширины внешнего 
	(фиксированного) контейнера. У него нельзя изменить размер, так как размер 
	его внешнего контейнера жестко закреплен. При увеличении текста, он будет 
	заново разбиваться на строки внутри этого блока.</p>

</div>

Эластичный макет

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

Пример эластичного макета можно посмотреть в моем представлении CSS Zen Garden (ограниченный гибрид эластичного и резинового макета). Насколько я знаю, это единственное представление CSS Zen Garden, которое является эластичным и доступно настолько, насколько это вообще возможно при нередактируемой (изначально заданной) разметке страницы. Я очень горжусь этим фактом (действительно, очень хороший пример, но у меня в Opera 9.22 при ширине меньше 150 пикселей блоки «наезжают» друг на друга, этот эффект описан выше в минусах резинового макета).

Плюсы эластичного макета

Минусы эластичного макета

Немного советов по эластичному макету

Пример эластичной верстки

<div style="width:35em; font-weight:bold; text-align:center; color:#c90;
background-color:#f7fbf3; border:1px solid #9c6; margin:0 auto; padding:10px">
	<p>Это эластичный <code>блок</code> шириной в 35em. Он будет менять 
	размер при изменении размера шрифта, и при этом он ничем не ограничен.</p>

</div>

В заключении

Как вы можете видеть, у каждой из описанных разновидностей макетов есть свои плюсы и минусы (может быть, вы знаете и другие?). И я не могу с уверенностью сказать, какой же из них лучше. Это просто уровень представления сайта, как я заметил в самом начале, поэтому с большой ответственностью и не меньшей уверенностью я могу заявить, что любой из этих макетов может быть применим для верстки доступных, удобных для пользователей, сайтов. Таким образом, я предлагаю не вставать не тропу приверженцев «идеологической правоты», делая что-то только потому, что она «правильно», в ущерб доступности или удобству. Я не пытаюсь их критиковать, ибо они заставляют нас размышлять над каждым шагом и являются источником вдохновения, но если вы следуете по их пути, делайте это с опаской. Пусть у вас будет цель и будет план. «Просто потому что» не является достаточной причиной — так я говорю своим детям.

Спасибо всем, кто дочитал до конца статьи. Буду рад любой критике и комментариям.


© Всеми правами на перевод CSS макеты: фиксированные, резиновые, эластичные. Плюсы и минусы обладает Николай Мациевский. Дата оригинальной публикации 16 августа 2007 года.
Добавить комментарий
Отображение комментариев: Древовидное | Плоское

Zodios

Интерестная заметка, добавил к себе в закладки.
Но есть заметка получше. В которой приводятся примеры типовхы модульных сеток.
Вот ссылка на Основные примеры разметок
zodios.net
15.09.2008, 12:17
Ответить

bur

Давным давно я встречал эту статью здесь. Рекомендую, кстати, поставить ссылку на оригинал.

Не стоит сравнивать текущую статью, в которой говорится об основных типах верстки, и ту, что вы перевели, с готовыми примерами дивовой верстки скелетов. Суть разная.
Fastcoder.org — портал для JavaScrpt-программистов
15.09.2008, 12:34
Ответить
NO USERPIC

h4

Цитата:
Располагайте основное содержание страниц сайта слева, чтобы пользователям с мониторами 640×480 не приходилось прокручивать сайт по горизонтали для нормального чтения;

Вам не кажется, что это требование несколько устарело?
11.10.2008, 17:08
Ответить
NO USERPIC

rgbeast

У вопроса две стороны. С одной стороны подавляющее большинство пользователей ПК имеют расширение не меньше 1024х768. С другой стороны растет число пользователей мобильных устройств, с расширением 640х480 или 800х600.
12.10.2008, 14:10
Ответить
NO USERPIC

h4

Если имеются в виду разного рода нетбуки, то среди них только один имеет разрешение 800х480, все остальные - от 1024. Для прочих мобильных девайсов разумнее делать отдельную версию, если таковые пользователи важны.
12.10.2008, 14:13
Ответить
NO USERPIC

rgbeast

Сейчас многие пользуются инетом, например, с айфона. Специальная мобильная версия - это в теории хорошо, на практике редкость. ИМХО, основную верстку можно расчитывать на 1024, убедившись. что на КПК она будет юзабельна (пользователи КПК уже привыкли к тому, что верстка сайтов сделана не для них и, кроме того, КПК умеет масштабировать сайты).
12.10.2008, 14:50
Ответить
NO USERPIC

h4

Подождите. Изначально я говорил о том, что устарела фраза про 640х480.

Проверять отображаемость сайта на различных устройствах - это очень хорошо. Но директивно указывать «Оптимизируйте сайт под разрешение 640х480» - вот это очень плохо. Такие статьи, как правило, читают начинающие дизайнры и разработчики. Вдохновляются статьями, можно сказать, и начинают творить свои макеты, пытаясь влезть в прокрустово ложе малого разрешения.

Дополнительную сумятицу вносит дата публикации перевода - 2008 год, при полном отсутствии указания даты написания оригинала.
12.10.2008, 15:21
Ответить
NO USERPIC

rgbeast

Дата оригинальной публикации указана, но внизу статьи. 2007 или 2008 год не такая уж принципиальная разница.
12.10.2008, 15:48
Ответить

bur

Посмотрим статистику экранных разрешений на спайлоге.
Действительно, на данный момент макеты с фиксированной шириной можно смело верстать под 1024x768 .
Имхо, про мобильные устройства забывать не стоит в том смысле, чтобы сайт в них не искажался до неюзабельности на слишком маленьких разрешениях, а вот верстать весь сайт под 640×480 без скролла уже не стоит.
Fastcoder.org — портал для JavaScrpt-программистов
13.10.2008, 11:04
Ответить
NO USERPIC

betaboy

Добрый вечер, подскажите, возможно ли реализовать на CSS 2 пропорциональный авто-ресайз фоновой картинки, как на этом сайте? http://www.alexandergusev.com/
07.08.2010, 22:37
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2007—2010 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100