среда, 22 апреля 2009 г.

Гид по дизайну в стиле Web 2.0. Часть 3: Шапка и границы контента

Часть 1: Обзор. Простота
Часть 2: Центрирование и количество колонок

Шапка

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

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

Шапка сайта сигнализирует пользователю: "Это верх страницы". Она должна быть оформлена броско и выразительно: большие символы, яркие иллюстрации, лаконичные слоганы, - в стиле "web 2.0".

Где и когда использовать выразительную шапку

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

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

Есть и другие приёмы отделения шапки от контента.

Использование разделительной линии:

Стилизация под колонтитулы:

Границы контента

После того, как мы выделили шапку, стоит подумать об остальных элементах страницы. И к ним относятся:

  • Навигация
  • Фон и поля
  • Основное содержимое
  • "Подвал"
  • Кросс-линки

Границы остального контента можно сделать контрастными по сравнению с шапкой. Контраст в данном случае подразумевается цветовой.

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

(...Продолжение следует...)


Читать далее!

четверг, 16 апреля 2009 г.

Таблицы против DIVов

В последние несколько лет многие веб-верстальщики перешли с табличной разметки на разметку при помощи блоков div. Вы среди их числа? Поздравляю! Но знаете ли вы о причинах такого массового "переселения"? И знаете ли вы, как оно должно быть сделано правильно? Если ответ на оба вопроса "Нет", то подозреваю, что табличный хаос вы просто заменили на div-хаос.

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

Часть 1: Хаос таблиц и div-блоков

Таблицы

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

Статистические исследования, проводимые MAMA (Metadata Analysis and Mining Application - Анализ метаданных и добыча данных приложений), показали, что в среднем таблично-ориентированные сайты содержат в своём коде вложенные таблицы (таблицы в таблице) и глубина вложения в среднем составляет три уровня. При этом количество таблично-ориентированных сайтов составляет 80% от всех сайтов, которые были проанализированы MAMA.

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

С технической точки зрения веб-верстальщику не нужно изучать и использовать стили, поскольку внешний вид таблиц можно регулировать при помощи стандартных HTML-аттрибутов, неотъемлемых от тагов <table>, <tr> и <td>. Кроме того при использовании таблиц верстальщик не сталкивается с проблемой "съезжания" столбцов таблиц вниз, как это часто бывает с div-блоками. Таким образом таблицы создают ощущение надёжности и стабильности.

Однако, если мы захотим модифицировать табличный сайт, использующий простейшие тэги <table>, <tr> и <td>, то мы столкнёмся с проблемами. Например, если нам понадобится убрать какую-то колонку из таблицы, то нам придётся пройтись по всем горизонтальным её строкам (<tr></tr>). А если нам вздумается "повернуть" таблицу на 90 градусов, то, фактически, весь код должен быть переписан заново. А если в таблице используются тэги <colspan> и <rowspan>? Путаница и хаос возрастают в разы!

Да и просто табличный код занимает больше места и состоит из большкго количества тэгов. Сравните, как один и тот же фрагмент разметки выражается таблицей...

<table cellspacing="0" cellpadding="0" border="0">
<tbody><tr>
<<d colspan="3" height="120">....</td>
</tr>
<tr>
<td class="menu" valign="top">...</td>
<td class="content" valign="top">...</td>
<td class="aSide" valign="top">...</td>
</tr>
<tr>
<td colspan="3">...</td>
</tr>
</tbody></table>

... и div-блоками:

<div id="header">...</div>
<div id="menu">...</div>
<div id="content">...</div>
<div id="aSide">...</div>
<div id="footer">...</div>

Сложность табличного кода растёт приблизительно в два раза быстрее сложности блокового кода по мере увеличения размера страницы. Особенно если учесть, что многие (90% от всех табличных сайтов по статистике MAMA) дизайнеры-"табличники" для задания дизайна таблицы используют аттрибуты border, width, cellpadding and cellspacing, которые прописываются к каждой строке и даже к каждой ячейке!

Громоздкий код приводит к трудности его понимания и расширения. Многие дизайнеры с трудом понимают свой собственный код, что уж говорить о тех, кому поддержка сайта переходит "в наследство". В результате, возрастате число ошибок в коде. Помимо этого табличный код загружается дольше. А веб-дизайнеры должны понимать, что число мобильных пользователей интернета неуклонно растёт.

Таблицы предназначены для представления табулярных данных, а не для построения структуры сайта.

Для дальнейшего чтения предлагаю вашему вниманию комикс Почему верстать таблицами глупо

Пример сайта в табличном хаосе: Rockford Area ASrts Council содержит 745 таблиц разной степени вложенности!

DIV-блоки

Тэг <div/> предназначен для задания блока в HTML-документе. Блоки предназначены именно для создания структуры документа, его каркаса. Помиме этого блоки очень удобны для описания фрагментов страницы, которые не могут быть описаны другими тэгами (таблицы, списки, элементы ввода и др.). Когда разработчик сайта не понимает семантику блоков, он начинает использовать их к месту и не к месту и возникает хаос блоков.

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

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

К сожалению, блочная структура не такая стабильная, как табличная: блоки могут "съехать" и весь дизайн страницынарушится. Однако стандарт W3C всё больше и больше уточняется, а браузеры с течением времени станомяься более "умными", поэтому блочная вёрстка становится всё более предсказуемой.

Основная проблема блочного метода - сличком частое и не всегда уместное использование тэгов div, которые должны использоваться лишь для логического группирования фрагментов страницы. Кроме этого, можно значительно улучшить читаемость кода, если придать блокам семантику через аттрибуты id (идентификаторы) и class (классы).

А вы знаете, что Google повышает релевантость сайта, если его код семантически продуман?

Из семантической направленности классов и идентификаторов выросла идея микроформата. Как говрмится в википедии: "Добавление микроформатов к обычной веб-странице позволит компьютерам обрабатывать HTML-текст и загружать информацию в базы данных. Например, поисковые роботы смогут находить контактную информацию, события и обзоры."
<div class="vcard">
<span class="tel">
<span class="type">home</span>:
<span class="value">+1.415.555.1212</span>
</span>
</div>
Пример микроформата hCard, который является форматом для описания людей, организаций и мест

Слишком частое использование аттрибута style может привести к тому, что, опят-таки, возникнет блочный хаос, особенно, если страница часто модифицировалась. Возвращаясь к статистике MAMA, 53.54% всех просканированных сайтов используют аттрибут style, причём 35.40% сайтов используют этот аттрибут в тэге div. Классы и модификаторы являются средством отделения кода (HTML-размётку) от его дизайна (стилей). Они также облегчают обращение к жлементам страницы в модели DOM.

Избыточное употребление тэга div и увелечение ярусов вложенности, также, как и в случае с таблицами, увеличивает размер страницы, время её загрузки и её гибкость для дальнейшей модификации. Рассмотрим несколько примеров.

Меню

<div id="menu">
<div class="selected">
<div class="graphicLeft">
<div class="graphicRight">
<a href="#">Home</a>
</div>
</div>
</div>
<div>
<div class="graphicLeft">
<div class="graphicRight">
<a href="#">About</a>
</div>
</div>
</div>
...
</div>

Это типичное злоупотребление тэгами div для построения меню. Его можно было бы избежать, использовав обычный список со стилем "display: block".

Заголовки

<div class="headingOne">My heading</div>
<div class="headingTwo">My heading</div>
<div class="headingThree">My heading</div>

Да, визуальный эффект заголовков можно создать, но семантика утрачена. Помните, поисковые системы повышают релевантность страницы относительно запросов пользователей, если она содержит заголовки с клбчевыми запросами, а заголовки помечаются тэгами h1, h2, h3 и т.д.

Список новостей

<div class="news">
<img />
<h2 />
<p />
<a />
</div>
<div class="news">
<img />
<h2 />
<p />
<a />
</div>

Использование обычного списка улучшило бы читаемость кода и уменьшило бы количество div-тэгов.

Разная ширина для разных контейнеров

Контейнер 1

<div id="contentNormal"></div>
<div id="aSideNormal"></div>

Контейнер 2

<div id="contentWide"></div>
<div id="aSideSmall"></div>

Если для каждой колонки на сайте создавать собственный контейнер, то может возникнуть ситуация, когда создано слишком много ненужных идентификаторов. Это можно исправить, добавив класс к тэгу <body/>. А потом каждый контейнер в body может просто наследовать этот клас, а потом разметка каждой отдельной страницы будет задаваться таблицей стилей. Таким образом повышается читаемость и содержимого и разметки. Плюс повышается гибкость поддержки такой страницы.

Кроме того, использование блочной структуры позволяет "на лету" генерировать страницы для печати, что невозможно при использовании таблиц. Например, вы можете скрыть верхнее меню в версии для печати, просто указав соответсвующему div-блоку меню стиль display: none.

Пример сайта в блоковом хаосе: фотохостинг Photobucket


Оригинальная статья на английском языке: http://www.smashingmagazine.com/2009/04/08/from-table-hell-to-div-hell/


Читать далее!

воскресенье, 22 марта 2009 г.

Гид по дизайну в стиле Web 2.0. Часть 2: Центрирование и колонки

Часть 1: Обзор. Простота

Центрирование

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

Чем хорош центральный дизайн?

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

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

Где и когда использовать центральный дизайн?

Везде и всегда, если только у вас нету очень веского повода, чтобы не делать этого.

Количество колонок

Несколько лет назад 3-колоночные дизайны были нормой, а 4-колоночные - тоже частым явлением. В наше время превалирующее большинство дизайнов имеет всего лишь 2 колонки. 3 колонки - это, как правило, максимум, который уже никто не перешагивает.

Почему меньше колонок - лучше?

Чем меньше, тем больше. Меньшее количество колонок выглядят проще, чётче и честнее. В меньшем числе колонок мы можем передать только самую нужную информацию, организованную самым простым образом.

Что делать, если нужно много колонок

  1. Разместите их в "подвале". Например, в последнее время среди блоггеров часто встречается приверженность к такому дизайну: две-три колонки в основной части и более трёх колонок в подвале с разной вспомогательной информацией (самые популярные сообщения, самые активные комментаторы, лента сообщений из ридера, всякие рейтинги и счётчики и др.)
  2. amazon.com имеет две боковые колонки (левая - для навигации, правая - для разных фишек), а по центру три колонки с ассортиментом товаров. Таким образом, функция каждой колонки ясна, дизайн прост, а товары хорошо просматриваются.

Дизайн амазона попытался скопировать некий All Things Web2.0: две боковые колонки и две колонки основного содержания. Причём, как боковые колонки, так и основной контент мало отличаются по цвету. В итоге посетитель сайта не знает, куда смотреть в первую очередь, а куда - потом. На странице нет чётко выраженных приоритетов.

Таким образом, аккуратно используйте дизаынй с четырьмя и более колонками. А лучше не используйте их вовсе: поверьте, трёх колонок хватает за глаза.


Читать далее!

CSS-совет: сортировка

Нет, это совет не про то, как отсортировать содержимое вашей страницы с помощью CSS (да это и нельзя сделать). Вопрос про то, как улучшить читаемость вашего CSS-кода. Ответ: сортируйте селекторы по алфавиту. Например, рассмотрим два фрагмента кода и найдём в каждом из них селектор margin-right.

Фрагмент 1:

div#header h1 {
z-index: 101;
color: #000;
position: relative;
line-height: 24px;
margin-right: 48px;
border-bottom: 1px solid #dedede;
font-size: 18px;
}

Фрагмент 2:

div#header h1 {
border-bottom: 1px solid #dedede;
color: #000;
font-size: 18px;
line-height: 24px;
margin-right: 48px;
position: relative;
z-index: 101;
}

Очевидно, во втором фрагменте нам было гораздо проще найти margin-right. Учтите, что пример просто иллюстративный. А если бы селекторов было больше?

Применяя этот совет на практике, вы сэкономите время и себе, и вашим коллегам, которые будут работать с вашим кодом.

Другие секреты вебдизайнера узнайте здесь


Читать далее!