Чтобы визуально разделить пункты меню, можно задать каждому из них нижнюю или верхнюю границу. В зависимости от того, какую из них вы используете, у вас будет не хватать границы сверху или снизу меню. Это можно исправить, добавив еще одну границу к самому блоку.menu:
Menu a {
border-top: 1px solid blue;
}
.menu {
border-bottom: 1px solid blue;
}
Сейчас ссылки меню выглядят слишком низкими, расположенными близко друг к другу. Если текст каждой ссылки не будет занимать более одной строки, то увеличить их высоту и сохранить при этом текст вертикально по центру можно с помощью свойств height и line-height:
Как видно на анимации, свойство height влияет на высоту ссылки, а межстрочный интервал line-height изменяет уже высоту самой текстовой строки. Обязательно задавайте одинаковые значения для этих двух свойств, если хотите, чтобы текст ссылки был вертикально отцентрирован.
Основная задача при создании горизонтальной навигации - расположить пункты меню в один ряд. Это можно сделать несколькими способами.
Первый вариант - задать пунктам списка свойство display со значением inline либо inline-block:
После этого можно заняться оформлением ссылок. Например, можно сделать такой стиль:
Menu a {
text-decoration: none;
font-family: sans-serif;
color: #5757a0;
display: inline-block;
padding: 10px 20px;
background-color: lavender;
border-bottom: 5px solid #5757a0;
}
Мы добавили фоновый цвет и нижнюю границу для каждой ссылки, а также увеличили ее размеры при помощи внутренних отступов padding . Заметьте, что между пунктами меню есть небольшие промежутки, хоть мы и не добавляли их через стили. Они возникают, потому что браузер так воспринимает символ возврата каретки между закрывающим и открывающим тегами
список снова был преобразован в блочный элемент:
#navbar ul { display: none; }
#navbar li:hover ul { display: block; }
Убираем у обоих списков отступы и маркеры, установленные по умолчанию. Элементы списка с навигационными ссылками делаем плавающими, формируя горизонтальное меню, но для элементов списка, содержащих подпункты задаем float: none; , чтобы они отображались друг под другом.
#navbar, #navbar ul {
margin: 0;
padding: 0;
list-style-type: none;
}
#navbar li { float: left; }
#navbar ul li { float: none; }
Затем нам нужно сделать так, чтобы наше выпадающее подменю не смещало контент, расположенный под панелью навигации, вниз. Для этого мы зададим пунктам списка position: relative; , а списку, содержащему подпункты position: absolute; и добавим свойство top со значением 100%, чтобы абсолютно позиционированное подменю отображалось точно под ссылкой.
#navbar ul {
display: none;
position: absolute;
top: 100%;
}
#navbar li {
float: left;
position: relative;
}
#navbar { height: 30px; }
Попробовать »
Высота для родительского списка была добавлена специально, так как браузеры не учитывают в качестве содержимого элемента плавающий контент, то без добавления высоты наш список будет проигнорирован браузером и контент, следующий за списком, будет обтекать наше меню.
Теперь нам осталось стилизовать оба наших списка и выпадающее меню будет готово:
#navbar ul {
display: none;
background-color: #f90;
position: absolute;
top: 100%;
}
#navbar li:hover ul { display: block; }
#navbar, #navbar ul {
margin: 0;
padding: 0;
list-style-type: none;
}
#navbar {
height: 30px;
background-color: #666;
padding-left: 25px;
min-width: 470px;
}
#navbar li {
float: left;
position: relative;
height: 100%;
}
#navbar li a {
display: block;
padding: 6px;
width: 100px;
color: #fff;
text-decoration: none;
text-align: center;
}
#navbar ul li { float: none; }
#navbar li:hover { background-color: #f90; }
#navbar ul li:hover { background-color: #666; }
по
ссылкам с помощью клавиатуры в Opera
слегка отличается - попробуйте проверить пример выше в Opera
, затем нажмите и удерживайте клавишу Shift
и используйте клавиши стрелок для перемещения по
ссылкам (это работает также на элементах формы). Это называется пространственной навигацией. Навигация по сайту
Навигация
по
сайту является, вероятно, наиболее распространенным типом меню
, которое требуется создавать. Это меню
для всего сайта (или его подмножества), показывающее как варианты перехода, которые может выбирать посетитель, так и иерархию сайта. Списки прекрасно подходят для этого, как вы видите в примере навигации по
сайту.
Example of site navigation
Home
- Home
- About Us
- Our Clients
- Our Products
- Our Services
- Contact Us
Здесь не слишком много сюрпризов, по
крайней мере, с точки зрения чистого HTML
. Позже в курсе мы поговорим о задании стилей меню
такого рода с помощью CSS
и добавлении поведения с помощью JavaScript
. Необходимо рассмотреть одну важную вещь, как выделить текущий документ в меню
, чтобы создать у пользователя ощущение присутствия в определенном месте, и что он меняет свое местоположение (даже хотя в реальности это и не так, за исключением, конечно, случая использования мобильных устройств для просмотра Web
!). Именно это мы и рассмотрим далее.
Создание у посетителей чувства "присутствия в определенном месте"
Одно из золотых правил разработки и навигации в Web
состоит в том, что текущий документ никогда не должен ссылаться на себя самого, но, наоборот, должен явно отличаться от других записей в меню
. Это важно, так как дает посетителям точку опоры и говорит им, где они находятся в своем путешествии по
сайту. Существуют крайние случаи, такие как Web
-приложения, permalinks
в блогах, и так называемые "одностраничные" Web
-сайты, но в 99% случаев ссылка
на документ, на который вы уже смотрите, является избыточной и путающей посетителя.
В руководстве по
ссылкам я утверждал, что ссылка
является соглашением и обязательством: вы предлагаете посетителям способ получить дополнительную информацию, которая им нужна, но нужно быть осторожным - вы потеряете авторитет и доверие
, если эта ссылка
не предоставляет пользователям то, что они хотят получить, и/или приводит к неожиданному поведению. Если вы предлагаете, например, ссылку, которая указывает на текущий документ, активация ее приведет к перезагрузке документа. Как пользователь
, вы этого не ожидаете - какой смысл щелкать на этой ссылке? Возникает только дополнительная путаница.
Это является причиной, почему текущая страница никогда не должна присутствовать в меню
ссылок. Можно удалить ее вообще, или еще лучше деактивировать ее как ссылку, но выделить (например, с помощью элемента strong
) - это предоставит пользователям визуальную подсказку и сообщит также слепым посетителям, что это важно - этот пример с выделением текущей страницы показан ниже.
Example of site navigation
About Us
- Home
- About Us
- Our Clients
- Our Products
- Our Services
- Contact Us
Сколько возможностей предоставлять пользователям единовременно
?
Другой вопрос для рассмотрения, сколько возможностей вы хотите предоставить посетителям. Многие меню
, которые встречаются в Web
, пытаются сделать каждую страницу сайта доступной из одного единственного меню
. Здесь на помощь приходят сценарии и приемы использования CSS
- можно сделать меню
более управляемым, скрывая части меню
, пока пользователь
не выберет определенную область
(разворачивающиеся меню
, как их иногда называют). Это хорошо придумано с технической точки зрения, но при таком подходе возникает несколько проблем:
- Не все посетители смогут использовать эту возможность как предполагается; пользователи клавиатуры, например, будут вынуждены перемещаться по всем ссылкам на странице с помощью клавиши Tab
, только чтобы добраться до требуемой ссылки.
- Потребуется добавлять много кода HTML
в каждый документ сайта, чтобы это реализовать, и большая часть его будет избыточна на многих страницах. Если я спустился на три уровня в меню, чтобы добраться до документа, который хочу прочитать, я не должен видеть варианты, ведущие на 4, 5, и 6 уровни глубины.
- Можно запутать посетителей, если предоставить им сразу слишком много возможностей - люди не любят принимать решения. Представьте себе, сколько может потребоваться времени, чтобы выбрать блюдо из длинного меню ресторана.
- Если на странице имеется не слишком много контента, но много ссылок, поисковые системы будут предполагать, что на этой странице находится не слишком много действительной информации, и не будут уделять странице много внимания, поэтому ее будет трудно найти при поиске в Web
.
В конце концов, вам решать, сколько пунктов поместить в меню
- различные проекты будут требовать различных вариантов - но если сомневаетесь, необходимо попробовать сократить меню
до ссылок только на основные разделы
сайта. Всегда можно будет добавить дополнительные подменю, где потребуется.
Контекстные меню
Контекстные меню
являются ссылками, которые создаются на основе содержимого текущего документа, и предлагают дополнительную информацию, связанную с текущей страницей. Классическим примером являются ссылки на "связанные статьи", которые можно видеть в начале новостных статей, как показано на рис. 23.1
Рис.
23.1.
Это немного отличается от контекстных меню
в программных интерфейсах пользователя, которое предлагает различные варианты выбора, в зависимости от того, где вызывается ( меню
появляющиеся при щелчке правой кнопкой мыши или при щелчке с нажатой клавишей Ctrl
в настольных приложениях, которые предлагают специальные возможности, в зависимости от того, где находится в данный момент указатель
мыши).
Контекстные меню
на Web
-сайтах являются прекрасным способом представления контента в других частях сайта; с точки зрения HTML
они являются просто еще одним списком ссылок.
Схема сайта
Схема сайта является тем, что и можно было бы ожидать - схемой всех различных страниц (или основных разделов, если речь идет о действительно огромных сайтах) сайта. Она позволяет посетителям сайта получить представление
обо всей структуре сайта, и быстро перейти в требуемое место
- даже если требуемая страница находится глубоко в иерархии страниц.
Как схема сайта, так и поиск
по
сайту являются прекрасным способом предложить посетителям возможную опору в случае необходимости, когда они заблудились, или предоставить быстрый доступ
для тех, кто торопится.
С точки зрения HTML
схема сайта может быть либо одним массивным списком вложенных списков полным ссылок или - в случае очень больших сайтов - заголовки
разделов с вложенными ссылками специфической иерархии разделов, или даже формы поиска для каждого из разделов.
Нумерация страниц
Нумерация
страниц необходима, когда вы должны предложить способ перемещения в большом документе, разбитом на отдельные страницы. Можно встретить нумерацию страниц в больших архивах изображений или на страницах с результатами поиска (такими, как поиск
Google
или Yahoo
).
Нумерация
страниц отличается от других типов навигации, потому что она обычно соединяется с тем же документом - но с помощью ссылки, которая содержит дополнительную информацию, такую как номер страницы, с которой начинать. Несколько примеров нумерации страниц показано на рис. 23.2 :
Рис.
23.2.
HTML
не предлагает ничего новаторского - вы снова предоставляете список
ссылок вместе с текущей ссылкой (указывающей, какой фрагмент данных выведен, и как далеко в разбиении на страницы вы находитесь), которая не является фактической ссылкой и выделена (например, с помощью элемента strong
).
Основное отличие от навигации по
сайту состоит в том, что для нумерации страниц требуется много программной логики. В зависимости от того, где вы находитесь во всем множестве данных, необходимо показать или скрыть предыдущие, следующие, первые или последние ссылки. Если имеется действительно массивный объем информации для просмотра, то вам придется также предложить ссылки для таких меток как 100, 200 и многих других значений. Поэтому меню
обычно не кодируется жестко как в HTML
, а создается на сервере. Это, однако, не изменяет правил - текущий фрагмент не должен ссылаться на себя самого, и вы не должны предлагать ссылки, которые никуда не ведут.
Когда списков недостаточно - карты ссылок и формы
В 99% случаев упорядоченные или неупорядоченные списки являются достаточной конструкцией HTML
для меню
, особенно в связи с тем, что
Рис.
23.3.
По умолчанию карта с элементами областями может превратить части изображения в интерактивные элементы
Example of an image-map
Любое изображение можно превратить в меню
, определяя карту с различными областями (называемые также горячими точками). Для карты задается атрибут
name
, а изображение и карта соединяются с помощью атрибута usemap
circle
для окружностей или poly
для нерегулярных форм, определяемых с помощью многоугольников (полигонов).
Определяет координаты в изображении, которые должны стать горячими точками - эти значения измеряются от верхнего левого угла изображения, и могут измеряться в пикселях или процентах. Для прямоугольных областей необходимо определить только верхний левый и нижний правый углы; для окружностей необходимо определить центр окружности и радиус; для полигонов необходимо предоставить список всех угловых точек.
Карты ссылок не слишком интересно определять и вводить в виде HTML
, вот почему инструменты работы с изображениями, такие как Adobe Image Ready
или Fireworks
, предлагают возможность создания их визуально (и генерируют соответствующий код HTML
).
Что является одним из основных элементов каждого интернет-сайта? Конечно же, навигационное меню
. Каждое меню представляет собой полезную часть веб-сайта, так как именно посредством него пользователь может переходить в другие разделы сайта. Основное взаимодействие посетителя с веб-сайтом осуществляется именно посредством навигационного меню. В наше время на страницах веб-сайтов можно повстречать всё более и более привлекательные и удобные навигационные меню.
Сегодня мы представляем вам 62 привлекательных навигационных меню
, основанных на CSS, javascript или технологии Flash.
Навигационное меню на CSS
Игры по типу казино или змейки и лесенки, украшенные красивым красочным меню.
Здесь мы видим отличное мягкое цветовое решение и интересный эффект при раскрытии подменю.
03.
Стивен Уиттенс (Steven Wittens) предлагает нам другую перспективу этого меню.
04.
На сайте UX Booth можно увидеть стильное, но очень простенькое меню.
05.
На сайте MacRabbit, что очевидно, используется меню в стиле MAC OS или Apple.
06.
На сайте Joyent используется простое, деловитое на вид меню, в котором предложены работы компании.
07.
Утонченность и простота данного портфолио точно приглянётся вам.
08.
Большие меню в виде изображений точно привлекут ваше внимание. Как вы видите, не очень традиционный способ разработки меню.
09.
Выпадающее меню, в котором используется 2 цвета, которые символизируют активный пункт меню и неактивный.
10.
Американский рекорд-лейбл Small Stone recordings использовали меню в виде радио, или же в виде Space Echo Roland SE-201.
11.
Нечто вроде карты, с помощью которой вы сможете «разведать» весь веб-сайт.
12.
Круглое меню в стиле Apple, в котором представлены приложения для iPhone.
13.
В Clearleft в качестве меню использовали нечто вроде календарика с запланированными заданиями.
14.
Выделенный пункт меню как будто находится в нажатом состоянии.
15.
Клик по пункту меню раскрывает дополнительное подменю. Меню выглядит вполне простым, хотя и окрашено в черный цвет.
16. .
В этом меню использован простой и приятный отличный эффект при наведении.
17.
Размер букв настолько мил и необычен, и именно это привлекает ваше внимание.
18.
Отличное решение по использованию блочной навигации, в которое реализован отличный эффект при наведении.
19.
Отличный зеленый цвет и вид меню в стиле листочков приглянуться вашему глазу. Также здесь реализован отличный эффект, который поможет вам определить, в каком подразделе вы находитесь в данный момент.
20.
Отличным концептом навигационного меню воспользовались дизайнеры веб-сайта Ronny Pries. Пользователи ориентируются по плану на полу.
21.
Еще одним креативным способом реализации навигационного меню является применение изображения фруктового дерева, посредством которого вы можете попасть в другие подразделы.
22.
Посмотрите, как креативно Мэтт Демпси (Matt Dempsey) использует мазки кисти.
23.
Отличный вариант реализации навигационного меню.
24.
Вертикальные вкладки, которые выглядят как папки, работающие непосредственно на веб-сайте. Очень редко используется данный способ, но отлично работает и выглядит.
25.
Навигационное меню, реализованное в стиле музыки панк-рок. Посмотрите, как Джефф Сармиенто (Jeff Sarmiento) реализовал данную идею.
26.
Нечто вроде иерархии. Еще один креативный способ реализации навигационного меню.
27.
Пиктограммы повышают чувство взаимодействия с меню.
Навигационные меню, разработанные с помощью технологии Flash
В данном меню навигации реализован очень интересный эффект при наведении курсора мыши.
29.
Навигация, которая позволяет вам производить некоторые настройки с помощью специальных ползунков.
30.
Интересное и привлекательное меню в стиле карт «Таро». Если вы кликните по карте, она тот час отправится в огонь.
31.
Жидкое навигационное меню, которое создаст у вас ощущение движения волн на озере.
32.
На сайте Nick Jones используется простое, но динамическое навигационное меню для перехода по портфолио.
33.
На сайте Marc Ecko нам представлена навигация в виде галереи изображений. Она позволяет посетителям пройтись по страницам искусства и философии.
34.
HBO представляет собой нечто вроде архива документов о фильмах. Посредством навигационного меню производится интерактивный выбор фильмов.
35. ?
Интересное навигационное меню с простым эффектом при наведении. Когда вы наводите курсор на пиктограмму, отображается содержимое меню.
36.
Дизайн-агентство по разработке навигационных меню, расположенное в Нью-Йорке и Форт-Лодердейле.
37.
Стильный дизайн навигации в стиле нео-древности с фоном в виде фресков.
38.
На сайте Nick Ad используется гибкое, но простое в использовании навигационное меню. Кликните в любую область на странице и увидите интересный эффект.
39.
Креативный человек использует собственные работы для привлечения посетителей в портфолио.
40. .
На сайте Section Seven реализовано интересное меню в стиле брошюры с подменю.
41.
Навигационное меню, которое открывается и закрывается при выборе определенных пунктов.
42.
На сайте Beside навигационное меню реализовано в стиле радуги.
43.
Концепт портфолио из картона. Очень интересный эффект при наведении.
44.
Маленькие кубики, сложенные вместе, выполняют роль навигационного меню.
45.
Насыщенная цветом карта с «призвуком» текстуры национальных гавайских тапочек, которыми гордится весь народ.
46.
Стол с вещами, символизирующими меню: телефон для контакта с администрацией, журнал для перехода в портфолио, газета для просмотра новостей и другое.
Очень интересно, когда в качестве навигации используются реальные вещи.
47.
Отличный творческий способ реализации навигационного меню. Каждый элемент по своему прекрасен, все они придают живости всему веб-сайту. Очень редко используют такие способы, но он действительно волшебный.
Меню навигации, разработанные при помощи технологии javascript
Простое и приятное для глаз меню навигации в разных цветах.
49.
Выглядит так, как будто меню реализовано при помощи Flask, но это не так. Опрятное, прикольное и стильное навигационное меню с эффектами при наведении курсора мыши.