— Привет, меня зовут Максим Покровский. Вы находитесь в моем рабочем кабинете. Поскольку я фрилансер, будем считать, что именно так он и выглядит. Здесь я пишу много интересных вещей, и если вы почувствовали, что я именно тот человек, который вам нужен, то я всегда открыт для контакта.
Сделал за последнее время:
|
Заказать мне работу |
| 27.07 | Всплывающее гибридное меню на CSS |
Мы собираемся создать гибридное меню, которое работает горизонтально - поперек окна. Оно имеет два уровня навигации (в нашем примере это главные разделы и связанные с ними страницы). Наше меню учтет всплывающий доступ ко всем страницам в обоих навигационных уровнях, отобразит текущие изменения в выбранной области пункта меню, чтобы пользователь знал, где он находится, и будет иметь легкий и чистый код.
Хорошо звучит? Давайте начнем. В итоге может получиться вот так
Создадим горизонтальное всплывающие меню с двумя уровнями навигации (в нашем примере это главные разделы и связанные с ними страницы).
Давайте начнем с создания структуры списков и некоторых из их главных представителей. Мы прикрепим ID к ul и классы “off” и “on” для главных элементов списка (способ, вероятно, является не лучшим решением, но он соответствует цели этой статьи):
Итак, мы имеем простую семантическую разметку, которая легко поддерживать. Вот как это выглядит сейчас
Первая вещь, которую мы собираемся сделать с нашим CSS - это отобразить первый уровень меню горизонтально (используя float) и скрыть все поднавигационые списки. Также мы сделаем ссылки в списке полужирными, цветными, и добавим границу.
Наконец, мы покажем подменю для активного раздела “Modern”. Лучший способ сделать это, если только Вы хотите один центральный, законченный файл меню, это указание для тела класса, скажем, “Modern”, и соответствующих селекторов. Здесь же мы установили класс “on” активной теме и “off” на неактивных темах
После добавления пары границ мы видим то, что имеем здесь.
Теперь, мы активизируем роловер. Процесс ничем не отличается от любого другого всплывающего меню на CSS, когда hover вешается на элемент li. Однако IE будет душить его из-за своей убогой реализацией псевдо класса :hover. Мы займемся этим через минуту. Следующий CSS удаляет границу на подменю, заставляет активное подменю отображаться всегда, и скрывает неактивное, чтобы отобразить их, когда мы задействуем hover. Установим z-index чтобы убедиться в том, что hover всегда имеет приоритет над текущей областью
Поскольку IE не поддерживает :hover не на чем кроме как на <a>, то у нас есть два варианта дейтсвий: оставить меню так как есть, зная, что это будет работать красиво через несколько лет, когда все браузеры начнут поддерживают :hover (стучим по дереву) или добавить немного JavaScript и перезаписать селекторы CSS на языке понятном для IE.
Скорректируем позиционирование в IE при мощи хака со звездочкой
А вот и JavaScript, который эмулирует работу :hover через onmouseover и заменю класса.
Добавим эти строчки в СSS
Вот так это может выглядеть, если добавить графики.
По материалу статьи Eric Shepherd Hybrid CSS Dropdowns
| ! | Самое обсуждаемое |
— Люди делятся на заказчиков и тех, кто может ими стать.
(девиз успешного фрилансера)
Комментарии
Оставить комментарий