sonyps4.ru

Динамичное меню. Создание динамического меню навигации при помощи списков и правил CSS

Наверняка вы видели на некоторых веб-сайтах динамичные и анимированные меню, которые изменяются при прокрутке вниз. Минимизируя главное меню навигации, вы оставляете больше места для содержания. В этом уроке мы объясним, как вы можете создать меню самостоятельно с помощью HTML5, CSS3 и немного jQuery.

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

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

Создание базовой структуры в HTML5

Мы начнем с создания основного HTML кода, который нам понадобится. Для начала, мы будем придерживаться очень простой структуры HTML5.

Теперь, когда наш первоначальный HTML код написан, мы добавим код для меню, а также некоторые другие детали для хедера нашего HTML файла.

Как создать анимированное меню | WebDesignMagazine

  • Главная
  • Статьи
  • Это очень клевый сайт!

Крутим вниз и смотрим как изменится меню

Все! Приехали!

В нашем : мы добавили мета-тег для автора, чтобы указать создателя документа, после чего мы включили известный “сброс CSS” от Эрика Мейера, что приведет к сбросу почти каждого элемента в HTML файле, давая вам более понятный и простой документ для работы. И так как мы будем использовать JQuery позже, в последней строке нашего главного элемента мы импортируем его через JQuery CDN.

В нашем теге, мы использовали по умолчанию HTML5 элемента. Наш будет во всю ширину страницы и будет нести ответственность за изменения между большими и малыми версии меню. Мы даем нашему класс с именем “large”, так чтобы мы могли изменить некоторые специфические свойства в CSS, чтобы преврать наше меню в уменьшенную версию. это наш меню-контейнер, который содержит изображение логотипа нашего веб-сайта и простой неупорядоченный список меню с тремя ссылками.

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

И это все по HTML части. Теперь нам нужно стилизовать элементы при помощи CSS и сделать меню динамичным.

Стилизация меню и страниц

/* Импортируем шрифт Amaranth */ @import url(//fonts.googleapis.com/css?family=Amaranth); /* Основной стиль */ body{ background-color: #ebebeb; } ul{ float: right; } li{ display: inline; float: left;} img.logo{float: left;} /* Размер и центровка меню */ nav{ width: 960px; margin: 0 auto;}

Немного этого CSS сделает наше меню 960px шириной по центру, при организации нашего меню справа и логотипа слева. Мы также импортируем Amaranth шрифт от Google Web Fonts, чтобы использовать его для нашего текста на странице.

Section.stretch{ float: left; height: 1500px; width: 100%; } section.stretch p{ font-family: "Amaranth", sans-serif; font-size: 30px; color: #969696; text-align: center; position: relative; margin-top: 250px; } section.stretch p.bottom{ top: 100%; }

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

Header{ background: #C7C7C7; border-bottom: 1px solid #aaaaaa; float: left; width: 100%; position: fixed; z-index: 10; } header a{ color: #969696; text-decoration: none; font-family: "Amaranth", sans-serif; text-transform: uppercase; font-size: 1em; } header a.active, header a:hover{ color: #3d3d3d; } header li{ margin-right: 30px; } /* Размеры для увеличенного меню */ header.large{ height: 120px; } header.large img{ width: 489px; height: 113px; } header.large li{ margin-top: 45px; }

Здесь мы заканчиваем основную стилизацию нашего заголовка. будет служить нашим меню контейнером. Он будет содержать наш элемент и будет служить элементом, где мы определяем цвет фона, высоту меню, стиль меню ссылок и другое. Он будет адаптироваться к ширине экрана со свойствами ширины: 100% и будет оставаться фиксированными в течение других элементов на веб-сайте. Важно не забуть задать z-индекс, чтобы этот элемент перекрывал остальные части страницы, а также положения:fixed​​, чтобы сделать div закрепленным вверху, так чтобы он оставался на том же положении, в то время как пользователь прокручивает веб-сайт. Как вы видите, кроме установки стилей для заголовков, мы также устанавливаем некоторые специфические стили для “large” класса, используя header.large. Начальное состояние нашего меню будет большим, и поэтому мы здесь определяем только нужные стили, чтобы оно выглядело, как мы хотим, при первоначальном входе пользователя на страницу.

Динамическое изменение размера меню

Наше меню сделано и стилизовано, но мы все еще хотим поработать над его минимизацией. Для создания этого «состояния», мы будем создавать новый класс для в CSS под названием “small”, который будет ответствен за изменение свойств, которые мы должны модифицировать. Мы уже определили большое меню, так что теперь мы просто должны сделать наше меню короче, наше изображение меньшего пропорционального размера, а (margin top) мы используем в наших элементах

  • , что также должно быть уменьшено, чтобы они оставались вертикально в центре с новой высотой меню:

    /* Sizes for the smaller menu */ header.small{ height: 50px; } header.small img{ width: 287px; height: 69px; margin-top: -10px; } header.small li{ margin-top: 17px; }

    Итак, как вы видите, эти стили практически идентичны тем, которые в большей меню, мы просто изменили класс “large” на “small” и изменили значения, которые мы использовали, на меньшие. Мы используем отрицательные марджин-топ на изображение, чтобы централизовать его в контейнере, так как изображение имеет тонкую тень и выше, чем написание для его приспособления. Теперь у нас есть все необходимые стили, чтобы настроить меню размера изменения, и если вы попытаетесь изменить его в вашем , вы увидите в браузере, что меню станет меньше. Но нам нужно, чтоб оно было динамичным.

    Изменение класса меню при помощи jQuery

    При всех наших стилях на местах, нам просто нужно добавить немного JavaScript, чтобы переключатся между классами «large» и «small». Так как мы хотим изменить это на основе прокрутки пользователем, мы будем использовать.ScrollTop () функцию в jQuery. Эта функция позволит нам получить или установить позицию прокрутки в пикселях. Положение прокрутки является количеством пикселей, которые уже были прокручены в окне браузера. В этом случае мы просто должны знать сколько пикселей пользователь прокрутил, чтобы мы могли вызвать наш код и переключиться между классами:

    $(document).on("scroll",function(){ if($(document).scrollTop()>100){ $("header").removeClass("large").addClass("small"); } else{ $("header").removeClass("small").addClass("large"); } });

    Если пользователь прокрутил более 100 пикселей, то тогда будет удален класс «large», который мы создали, и добавлен наш новый класс «small». Таким образом, меню будет изменяться в размере, как мы ранее определили в CSS. Попробуйте, к этому времени оно должно уже работать, но вы могли заметить, что переходы между классами, кажутся очень резкими.

    CSS переходы для анимации меню

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

    Header,nav, a, img, li{ transition: all 1s; -moz-transition: all 1s; /* Firefox 4 */ -webkit-transition: all 1s; /* Safari and Chrome */ -o-transition: all 1s; /* Opera */ }

    Здесь мы определили переходы для всех свойств CSS для , и

  • элементов, в основном все элементы, которые мы меняем. Этот код будет анимировать изменения между обоими классами с переходами CSS в течение 1 секунды. Проверьте сейчас, результат должен быть очень плавным.

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

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

    Выпустив Windows 95, компания Microsoft предприняла попытку перенести акцент с системно-программистских вещиц вроде "файлов" на понятные любому деловому человеку "документы". Для этого была усилена взаимосвязь между типами файлов и настойчиво предложено открывать их двойным щелчком мышки непосредственно по значку документа, а не из запущенного предварительно приложения. Что же, это не новинка и, в принципе, вещь более удобная, чем лазание по дискам в окне "Открыть".

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

    Я раз десять пробовал модернизировать меню "Документы", но особо путного ничего не получилось. Могу предложить другой вариант. Представьте себе, что в системном меню на первом его уровне имеется один или несколько пунктов, открывающих доступ к системе подменю, соответствующей принятому вами разбиению документов на группы (по теме, времени, типу и т.п.), причем в подменю содержатся все находящиеся в вашем распоряжении файлы документов, их состав обновляется по мере создания или удаления, они переводятся из одного меню в другое, автоматически следуя за перемещениями файлов на диске.

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

    Но чтобы все выглядело тик-так, придется еще повозиться. Надо использовать длинные имена, тогда ваше пользовательское меню с документами получит человеческий вид. Это потребует от вас отказаться от милых сердцу DOS"овских каракатиц наподобие Docs, Doc1 и т.п. Ничего, надо привыкать называть вещи своими именами и забыть про восьмибуквенные подпольные клички.

    Над именами придется подумать. Как я уже говорил, количество вложенных директорий не должно превышать 3, ну максимум 4 уровней. Их названия не следует делать слишком пространными, как и имена содержащихся в них документов. Иначе ваше меню будет гулять по экрану сначала слева направо, потом загибаться обратно и снова вперед. Замучаетесь гонять мышку. Избегайте дублирования слов. Если директория и, соответственно, подменю называются "Договоры", то не надо входящие в него документы называть "Договор №139-45 от...". Совершенно очевидно, что это договор, раз он лежит в папке с договорами. Старайтесь также с помощью нескольких слов, отведенных судьбой (или шириной экрана, если вам так больше нравится) на описание документа, отразить его содержание. Номер и дата - сведения прекрасные, но навряд ли вы с ходу вспомните, о чем был этот документ.

    Ценой дополнительных усилий можно добиться согласования внутри цепочки, образуемой названиями подменю и конечного документа, падежей, спряжений и прочей нечисти. Глазу приятнее и менее утомительно для вас читать на экране прилично построенные фразы, а не общаться с компьютером на ломаном русском, как с представителем иностранного юридического лица. Например, если документ описывается выражением "Договор за 1996 год об аренде склада на ж.д. станции", то можно составить следующую цепочку меню: "Договор" - "за 1996 год" - "об аренде" - "склада на ж.д. станции". Быть может, кого-то покоробит название файла "склада на ж.д. станции", но с учетом выстраивающейся перед ним цепочки из названий директорий все получается правильно.

    У организованного таким способом динамического пользовательского меню есть и недостатки. Во-первых, система не всегда обновляет меню сразу после попадания туда нового файла (удаления имеющегося). Видимо, где-то в лабиринтах многопоточности и многозадачности застревает команда о необходимости освежить меню. Немного неприятно, но случается не так уж часто, а после загрузки машины меню уж точно будет соответствовать тому, что записано на диске. (Это не значит, что я призываю каждый раз в подобных случаях перегружать машину, обычно можно обойтись перечитыванием директории в "Проводнике" по клавише .) Во-вторых, нехорошо хранить свои рабочие файлы внутри директории Windows. Придется вытащить оттуда папку "Главное меню" и следить за ней, как положено беспокоиться о сохранности пользовательской информации - делать резервные копии, очищать от мусора и т.д. Третья неприятность носит психологический характер - первое время уж очень непривычно видеть свои рабочие директории не внутри корневого оглавления диска, а где-то в "Главном меню". Но это проходит - привыкаешь.

    Скрытые элементы меню

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

    В меню Windows 95 полным-полно вещей, которыми при нормальной работе пользоваться не приходится. К ним относятся ярлыки от программ деинсталляции приложений, различные файлы Readme и прочая текстовая информация от производителей, программы регистрации и формы для отправки по электронной почте. Сюда же можно зачислить и утилиты служебного плана, которыми вы пользуетесь только тогда, когда софт начинает хныкать или вести себя подозрительно. Для выполнения ежедневных процедур компьютерной гигиены удобнее всего (и достаточно) прибегнуть к услугам утилиты автоматического выполнения System Agent из комплекта Plus, вместо того чтобы запускать сканирование диска и дефрагментацию вручную. А раз так, то и постоянно держать эти программы в меню нет резона.

    Однако не стоит и удалять из меню все, что в данный момент показалось лишним. Например, многие приложения при деинсталляции обращаются как раз к ярлыку Uninstall в меню, а не к самой программе. Бог им судья, но если ярлык удалить, то потом не получится чикнуть обычным путем приложение. Существует к тому же простой и безболезненный способ упростить меню, ничего оттуда не выбрасывая.

    В Windows 95, как и в DOS, есть понятие скрытых файлов и директорий. При обычной работе вы не видите их на экране, так как система не показывает те файлы и каталоги, у которых установлен флажок "Скрытый". Флажок этот взводится и сбрасывается в окне свойств файла. Чтобы увидеть такие объекты, надо в "Проводнике" зайти через меню в "Вид"/"Параметры" и включить режим "Отображать все файлы".

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

    Если меню стало проще и удобнее, значит вам удалось внести в интерфейс Windows 95 еще одну полезнейшую настройку. Когда же придется заняться ковырянием в системных неполадках (а такое, увы, случается нередко), просто включите в "Проводнике" отображение всех файлов и получите в свое распоряжение полный набор элементов меню.

    В принципе, аналогичный подход можно использовать в отношении рабочего стола, содержимое которого связано с папкой C:\Windows\Рабочий стол. Однако для десктопа система хранит не только ярлыки, но и порядок их размещения (он сокрыт в недрах реестра конфигурации), поэтому при переключениях режима отображения у меня на машине система собирала значки в алфавитном порядке. Что меня, естественно, не устроило. Проблему создания нескольких раскладок рабочего стола можно решить, но лучше уже другим путем.

    Возможности обустройства меню и рабочего стола в Windows 95 (в отличие от сегодняшней беседы) на описанном далеко не заканчиваются. Новые подходы к оптимизации рабочего места может найти любой пользователь, если выкроит время для экспериментов и попробует несколько нетрадиционно применить стандартные и общеизвестные системные средства из арсенала Microsoft.

    Роман Соболенко

    Многочисленные просьбы моих настойчивых читателей и просто любознательных пользователей возымели свое действие. Я наконец то создала урок, в котором мы будем учиться делать динамическое меню Вконтакте с эффектом нажатых кнопок! По аналогии с обычными сайтами интернета, когда посещенная ссылка маркируется особым способом (нажатая кнопка, подчеркивание итд) — мы будем создавать такую же конструкцию Вконтакте, с помощью созданных страниц и графического оформления. Для начала мы сделаем графические заготовки в фотошопе — создадим шапку меню и кнопочки двух видов. Потом создадим несколько страниц Вконтакте, согласно пунктам нашего меню. И напоследок сделаем хитрый прием, который, собственно, и создаст нам иллюзию перехода по ссылке. Урок достаточно сложный и подходит для тех, кто уверенно себя чувствует в функционале Вконтакта. Все манипуляции я буду производить на примере своей группы Вконтакте , где этот эффект реализован вживую. Итак, за дело!

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

    Шаг 2. Создаем в фотошопе строку навигации
    Теперь нам надо создать строку навигации. В данном примере я использовала в качестве кнопок только текст. Но на ваше усмотрение можно создать цветные кнопки и уже на них написать текст. Делаем так — создаем в фотошопе прямоугольник 600х56 пикселей и в данном случае заливаем его белым цветом. Потом в строку пишем пункты меню — где-то порядка 5-6 пунктов, не больше. Большее количество пунктов будет смотреться зажато.

    Шаг 3. Создаем в фотошопе строку навигации в нажатом состоянии
    Теперь нам надо создать активные ссылки, так, как-будто по ним нажали. Я использовала обычное подчеркивание, но можно использовать другой цвет текста или фона для маркировки посещенной ссылки.

    Шаг 4. Нарезаем готовые картинки
    На данном этапе нам надо нарезать картинки из Шага 2 и Шага 3. У нас должно получиться два комплекта по пять кнопок — одна кнопка без подчеркивания, другая кнопка с подчеркиванием. Кнопки каждого отдельного пункта (с подчеркиванием и без подчеркивания) должны быть одинакового размера. На картинке ниже представлено все наше графическое оформление — десять кнопок и одна шапка меню.

    Шаг 5. Создаем Вконтакте страницу Меню
    Теперь переходим ВКонтакт. Наша задача — создать отдельную страницу под названием «Меню». Для этого мы воспользуемся таким кодом
    http://vk.com/pages?oid=-XXX&p=Нaзвание_страницы
    где вместо ХХХ мы подставим id нашей группы, а вместо текста «Название страницы» мы напишем Меню. Теперь надо выяснить id группы. Как это сделать? Заходим на главную страницу группы и смотрим на наши записи на стене — прямо под блоком «Добавить запись» будет написано «Все записи» — нажимаем на эту ссылку.

    Шаг 6. Определяем id группы и редактируем код
    Переходим на страницу и видим урл такого вида https://vk.com/wall-78320145?own=1 , где цифры 78320145 в данном примере и есть id группы. Подставляем наши данные в исходный код и получаем запись такого вида:
    http://vk.com/pages?oid=-78320145&p=Меню (с вашими цифрами!). Вставляем эту строку в адресную строку браузера и нажимаем Enter. Так мы создали новую страницу Вконтакте и изначально она выглядит так.

    Шаг 7. Создаем Вконтакте остальные страницы навигации
    Аналогичным образом мы создаем еще четыре страницы навигации: Цены, Как заказать, Техзадание и Вопросы. То есть еще четыре раза копируем в адресную строку браузера соответствующий код (с вашими цифрами id в примере ниже мои цифры):

    http://vk.com/pages?oid=-78320145&p=Цены

    http://vk.com/pages?oid=-78320145&p=Как_заказать

    http://vk.com/pages?oid=-78320145&p=Техзадание

    http://vk.com/pages?oid=-78320145&p=Вопросы
    Обратите внимание, в названии страницы из двух слов (Как заказать) пробел между словами заменен на нижнее подчеркивание Как_заказать. Теперь у нас есть пять готвых страниц под каждый пункт меню. Страницу Портфолио мы не создавали поскольку она размещается на странице Меню

    Шаг 8. Загружаем фотографии на первую страницу меню
    На созданной, пока еще пустой странице (см. Шаг 6) Меню нажимаем на ссылку Редактировать или на ссылку Наполнить содержанием. После этого мы видим панель редактирования. Здесь нам надо нажать на значок фотоаппарат с функцией Загрузить фотографию. Важно! Обратите внимание на то, чтобы у вас стоял режим wiki-разметки. Переключение режимов регулируется значком у правого края страницы.

    Шаг 9. Результат после загрузки картинок
    Загружаем наши картинки, которые мы создавали в Шаге 1 и Шаге 2. После загрузки мы видим такой код, как на картинке ниже, а само меню выглядит так. После каждого изменения кода не забываем нажимать Сохранить страницу, а потом нажать предпросмотр для просмотра результата.

    Шаг 10. Редактируем код картинок
    Теперь наша задача заменить все свойства noborder на свойство nopadding. А у первой картинки проставить реальные размеры, поскольку Вконтакт при загрузке ужал картинку до 400 пикселей. После всех изменений мы должны получить такой код и такое меню.

    Шаг 11. Проставляем ссылки для картинок
    Теперь мы должны проставить ссылки для каждой картинки. Ссылку надо вставлять после nopadding| вместо пробела перед закрывающими скобками. Для первой картинки (шапка меню из Шага 1) можно дать ссылку на главную страницу группы, а можно воспользоваться свойством nolink (ставится через; после nopadding без пробелов). Для второй картики вставляем адрес страницы формата page-78320145_49821289 . То есть полный урл картинки https://vk.com/page-78320145_49821289 , до первую часть с доменом можно опустить. А вот для ссылок на внешние сайты урл ссылки надо указывать полностью.

    Шаг 12. Копируем код на остальные страницы навигации
    На этом, достаточно простом шаге, мы копируем последний код из предыдущего шага и вставляем его на остальные созданные страницы — Цены, Как заказать, Техзадание и Вопросы. Находимся на странице, нажимаем Редактировать или Наполнить содержанием (находимся в режиме wiki-разметки), вставляем код и нажимаем Сохранить. И потом также на следующей странице. То есть сейчас у нас есть пять страниц, на каждой из которых меню выглядит абсолютно одинаково. Но зато уже можно осуществлять навигацию по меню — при нажатии на ссылку например Цены, мы переместимся на страницу Цены итд.

    Шаг 13. Делаем эффект нажатой кнопки
    Теперь нам предстоит на каждой из пяти страниц поменять одну картинку (кнопку без подчеркивания заменим на кнопку с подчеркиванием). Например, на первой странице Меню мы загружаем новую картинку и потом заменяем в коде адрес старой картинки на новый (подчеркнуто красным). Потом переходим на страницу Цены, загружаем картинку с подчеркнутыми Ценами и меняем в коде на адрес новой картинки. Потом заходим на страницы Как заказать, Техзадание и Вопросы и делаем туже самую операцию аналогичным образом.

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

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

    Аннотация: Цель. Научиться применять элементы HTML (списки и гиперссылки), а также свойства CSS (модель отображения, псевдоклассы гиперссылок) для формирования системы навигации на веб-странице.

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

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

  • Запустите Visual Web Developer (или Visual Studio) и создайте новый документ HTML.
  • Внутри элемента head введите подходящий заголовок страницы.
  • Введите открывающий тэг . Обратите внимание, что программа даёт подсказки по мере набора текста (эта технология называется Intellisense): введя открывающую угловую скобку, вы видите перечень html-элементов, а введя пробел после имени элемента, вы видите перечень допустимых имён атрибутов данного элемента (в данном случае необходим атрибут type ). Поставив знак равенства после имени атрибута, вы можете увидеть список его допустимых значений (в тех случаях, когда такой список существует в принципе). Всякий раз значение можно выбрать из списка щелчком мыши либо, если по мере ввода оно выделилось автоматически, просто нажать Enter или пробел.
  • После ввода закрывающей угловой скобки редактор автоматически добавит закрывающий тэг .
  • Создайте в теле документа набор категорий в виде неупорядоченного списка (ul ), каждый элемент которого содержит список ссылок (см. пример).

    Листинг 7.1. Разметка списка категорий и ссылок

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

  • В таблице стилей добавьте следующее правило:

    #MainMenu > li { float: left; list-style-type: none; }

    Отслеживайте изменения, происходящие с отображением документа, разделив окно редактора на представление исходного кода и конструктора. После применения указанного стилевого правила пункты внешнего списка (li ) расположились горизонтально (за счёт обтекания):


    Рис. 7.1.

  • Пусть вложенные списки ссылок будут невидимыми (добавьте им свойство display:none; ) и появляются только при наведении курсора на название соответствующей категории. Следующее правило с селектором псевдокласса hover имеет такой смысл: у списка (ul ), вложенного в пункт списка (li ), на который наведён указатель (:hover ) и который вложен в элемент с id=#MainMenu , способ отображения следует сделать блочным (а не невидимым):

    #MainMenu li:hover ul { display:block; }

    Сохраните разрабатываемый документ, откройте его в браузере и убедитесь, что меню работает правильно.

  • Принципиально механизм работает - осталась эстетическая сторона.
    • Назначьте якорям любого уровня вложенности в меню (правило #MainMenu a ) желаемый цвет (color ), гарнитуру (font ), а также уберите подчёркивание (text-decoration ).
    • Назначьте элементам списка категорий (правило #MainMenu > li ) фоновый цвет (background ), внутренний отступ (padding ) и рамку справа (border-right ).
    • Назначьте элементам вложенного списка ссылок (правило #MainMenu li li ) такой же фоновый цвет, как и в списке категорий, а также небольшой отступ и рамку снизу. Кроме того, уберите маркировку списка (list-style-type ).
    • Уберите у списка ссылок (правило #MainMenu li ul ) поля и отступы (margin и padding ).

    Небольшой проблемой является то, что некоторые элементы списка категорий увеличиваются в ширину при наведении на них указателя. Это является следствием того, что ширина элемента списка определяется шириной всего содержимого - включая вложенный список. Однако если выбросить вложенный список из нормального потока и позиционировать его абсолютно, то его ширина более не будет влиять на ширину родительского элемента. Поэтому укажите для списка ссылок абсолютное позиционирование, а для элементов списка категорий - относительное. Проверьте в браузере. Затем уточните положение вложенного списка относительно его контейнера путём задания значения свойств left и top (не опускайте выпадающий список слишком низко, иначе он станет пропадать при попытке выбрать в нём ссылку).

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

  • Добавьте последний штрих: пусть элементы обоих списков при наведении указателя немного изменяют цвет фона (правило #MainMenu li:hover ).
  • Окончательный результат должен быть подобен следующему.



    Загрузка...