Выпадающее по клику меню на css
я однажды реализовывал подобное меню. там смысл достаточно прост: делаем обычное навигационное меню. раз меню выпадающее — делаем первый и второй уровень (допустим). первый уровень отображается всегда, а вот второй скрываем с помощью display: none;
. при наведении на определённый пункт меню первого уровня через псевдокласс :hover
отображаем ссылки второго уровня.
тут правильно задать позиционирование для второго уровня. а также очень важно (это проблема заставила меня долго мучаться) задать для пункта, при наведении на который будет появляться подменю, padding
по-больше. чтобы площадь реагирования на наведение увеличить.
Для большей наглядности мой код HTML (упрощённый):
<!DOCTYPE html PUBLIC "-//W3C/DTD//XTHML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm1" xml:lang="en" lang="ru"> <head> <title></title> <link rel="stylesheet" type="text/css" href="style.
css"/> </head> <body> <ul> <li><a href="#">О компании</a></li> <li><a href="#">Услуги</a> <ul> <li><a href="#">Все виды оценки</a></li> <li><a href="#">Автоэкспертиза</a></li> <li><a href="#">Автострахование</a></li> <li><a href="#">Юридические услуги</a></li> </ul><!--end sub_nav--> </li> <li><a href="#">Тарифы</a></li> <li><a href="#">Новости</a></li> <li><a href="#">Контакты</a></li> </ul><!--end main_nav--> </body> </html>
И код CSS (тоже упрощён):
#main_nav { position: relative; top: 15px; margin-top: 14px; margin-left: 280px; } #main_nav li{ display: inline; padding: 0 8px; border-left: 1px dotted #8b6619; position: relative; z-index: 2; } #main_nav li:first-child, #main_nav ul li { border-left: none; } #main_nav ul { display: none; position: absolute; top: 19px; left: 0; z-index: 1; width: 155px; } #main_nav li a, #main_nav li ul li a{ color: #8b6619; font-family: "Times New Roman", serif; font-size: 0.
9em; font-weight: bold; text-decoration: none; outline: none; padding-bottom: 17px; } #main_nav li a:hover, #main_nav li ul a:hover { color: black; } /*--------------Подменю--------------*/ #main_nav li:hover ul { display: block; }
Вот и всё. Спасибо за голоса!)
Как сделать горизонтальное или вертикальное выпадающее меню для сайта на основе CSS и Html в онлайн сервисе
Комментарии и отзывы (63)
Инка
Просто шикарно, спасибо! Действительно, простой способ, особенно приятно, что это легко сделать для WP
Androi
Можно использовать Ваш код впадающего горизонтального или вертикального у себя на сайте?
flickr gallery
Wow, nice tutorial, thanks google translate 😉
Ян
Полезная статья, попадает в интересные ссылки. Но можно было сделать проще: выводить список категорий с помощью функции wp_list_categories и при добавлении/удалении рубрик не придется руками править выпадающую менюшку. Наверное напишу у себя на блоге, как это сделать.
Dims
Огромное спасибо за обзор. Очень полезно.
Веретено
Я так понял, что менять название страниц в админке менять не получится? Т.е. этот вариант без динамики? Для Joomla не имеет смысла этот способ создания выпадающих менюшек использовать? А встроить этот инструмент в сам WordPress не получится? Плагин прикрутить…
Андрей
А в IE эти выпадающие менюшки будут работать без дополнительного небольшого Java Script? Не проверяли?
Иван
Для динамической структуры сайта такое выпадающее меню пригодно? Или там жестко задаются значения?
Алексей
Спасибо за статью. Попробую…
Антоншка
Отметьте, что кнопка «Download» появляется только после регистрации на онлайн сервисе Pure CSS Menu.
Alex
Дмитрий здравствуйте.
А скажите навороченность и множества выпадающих меню
на странице как то влияют на ее скорость загрузки?
СПС заранее…
Анна
А мне не прислали файл с Html, а только лишь папку с картинками 🙁
ЧТО ДЕЛАТЬ?
Анна
Код Html взяла в исходном коде страницы, на которой было изображена моя менюшка (онлайн сервис PureCSSMenu мне его прислал).
Я все вставила как Вы написали. Получилось.
Но потом решила все подвинуть вправо, чтобы по центру было. И тогда у меня все выпадающие меню второго уровня вообще очень сильно вправо сместились и вниз.
так что я до них мышкой не могу достать. Когда начинаю двигать в их сторону мышкой, то они пропадают.
Что можно сделать?
mamay_p
Всё получилось, но вместо русских названий пунктов меню отображаются вопросы. Два дня уже мучаюсь. Ничего не выходит. Сайт на Джумла. Код вставлял в файл шаблона, т.к. из админки через модуль он не встаёт.
Дмитрий
mamay_p: перед сохранение измененного файла шаблона попробуйте преобразовать текст в UTF-8 без Bom. В Notepadd это можно сделать в разделе «Кодировки».
mamay_p
Дмитрий: Спасибо. Всё получилось. Только с кодировкой просто в UTF-8. Ещё раз спасибо огромное.
mamay_p
Дмитрий: теперь другая проблема))))) в неактивном состоянии выпадающее меню торчит сбоку слева посредине страницы, при наведении на материнское меню, выпадающее перемещается на своё законное место.
Андрей
Спасибо! Вот бы еще созданное меню научиться таскать по экрану, т.е. в нужное место вставлять!!! ПОМОГИТЕ! В файле «cm-style.css» меняю «relative» на «absolute» с указанием «Top» и «Left» позиции и, не получается!
Andrey
Еще бы научиться изменять положение меню на дисплее. Где в css position вставлять. Подскажите пожалуста!!! Help!!!
valya
Добрый день, прошу помочь у меня не вышло все вставить куда надо.
первую часть просто поставила в конец ксс кода шаблона. а вот со второй частью проблемы.
если создавать новый модуль с щтмл кодом то ему нужно дать заголовок. какой? и после этого просто появляется модуль с таким именем а на сайте ничего не меняется, и еще вопрос нужно ли мне выключать то меню которое уже есть на сайте(гориз.)
Евгений
Доброго времени суток!
1.зарегистрировался http://purecssmenu.com/
2.Создал меню на сайте http://purecssmenu.com/
3.скачал архив, распаковал его.
4.скопировал код и. ..а в какую часть кода (в моей таблице стилей) вставлять скопированный код?
У меня то размещение менюшек скакать начинает, то вообще ничего не происходит :(((
Подскажите пожалуста.
Заранее благодарен.
Евгений
как найти нужное место вставки кода в файле style.css и куда вставлять html код???
Намик
у меня на опере меню сдвинулось на верх, а в FF и IE все пошло нормально, как поступить с оперой? Спасибо
Евгений
Намик: как найти нужное место вставки кода в файле style.css и куда вставлять html код???
Кирилл
Создал менюшку — скачал zip файл — распаковал.
Затем проделал все операции которые указаны для Joomla внизу статьи — указал правильное место модуля в шаблоне.
Но вместо выпадающего меню получил в шапке сайта весь код написанный на html (который я вставлял)
Как решить проблему ?
Tim
У меня такая же проблема как у Кирилл. Код вместо меню:(
moon
у меня никакое меню не отображается, только последняя строчка — CSS Drop Down Menu by PureCSSMenu. com. Что делать не знаю, замучилась уже с этими подкатегориями.В шаблоне, который установила на сайт, они не прописаны, сама сделать не могу((
Люба
Не могу поставить, отображается коряво постоянно, целый день сижу над ним, может кто-то помочь?
сергей
а с категориями такое получится?
Любовь
Спасибо за постоянные подробные консультации. Это для нас «чайников» просто спасение. Я сделала все, что здесь описано. Но на сайте у меня меню вообще не высвечивается, а при наведении мышки на него вылетают выпадающие подменю. Но на них написаны вместо букв различные буквы и значки в беспорядке. Сайт в юкозе. Помогите разобраться, почему?
Наталья
Добрый день! Помогите пожалуйста. Я сделала выпадающее меню с помощью плагина Drop-down Menu, очень удобная вещь, но есть маленькая заминка. Шаблон сайта на вордпрессе выглядит следующим образом: название «Главная» находится по середине окна, а те странички для которых я создавала менюшку после установки плагина съехали на вторую строчку под название «Главная», да еще и прилепились с левой стороны окна сайта. Как только этот плагин убираешь, созданные странички возвращаются на свое место в строку где название «Главная». Для наглядности приведу пример:
(это так, как получается с плагином):
Главная
Коротко о сайте Это Интересно!
(а это так, как мне бы хотелось сделать):
Главная Коротко о сайте Это Интересно!
Я так поняла, что мне нужно покапаться в цсс самого плагина, но что только я уже не делала не получается сдвинуть это меню.
Добрые люди, может вы подскажете, какой код мне нужно поменять? Заранее спасибо!
Dezu
небольшая проблемка с purecssmenu… на главной странице менюшка отображается не полностью и при наведении не раскрывается. если перейти на любую другую страницу сайта, то меню полностью функционирует, но происходит смещение на строку вверх. подскажите как можно это исправить?
Юля
Огромное спасибо!!!!!!!!
выручили!
Серж
Андрей! Подскажи пожалуйста, как бы сделать все наоборот? Мне нужно как раз запретить показ в менюшке страниц второго уровня т. е. подстраниц. Я хочу сделать страницу новости на своем блоге и там размещать подстраницы с новостями, их будет много и выплывающее меню только мешает, как бы это запретить! Если нужно посмотреть как это выглядит вот сайт: http://1efimrealty.ru
Спасибо заранее!
Админ
Менюшка классная! Посмотрите еще один урок (ссылка ниже), очень прикольное меню!
Тут урок как сделать классное Анимированное меню с выскальзывающим текстом и иконкой — http://ileson.ru/lesson.php?rub=6&id=50
pri4ina.ru
Исправляй начало статьи.
…нужно в первую очередь там зарегистрироваться, а затем уже определяться с шаблоном выпадающего меню.
Пол часа делал менюшку, а потом оказалось, что там ещё и регистрироваться надо…
У меня просто нет хороших слов, предупреждать же надо, что необходима регистрация.
Димка
Посмотрите пожалуйста, Semant.ucoz.ru можно ли в отдельном блоке поменять дизйн шрифт, размер подскажите виджет может какой для блоков
Даниил
Способ конечно хороший, но столкнулся с другой проблемой: все подпункты отображаются вертикально одним столбцом, а мне нужно по несколько подпунктов в один ряд. Можно ли что-то сделать?
Виктор Ивановский
Читать код выравненный по центру ужасно (
Бабай
Подскажите почему сьезжают вниз сайдбар,…или виджеты
Роман
в IE8 меню отображается некорректно. В остальных браузерах все отлично. Подскажите как с этим бороться.
Дима
Ужасный урок!! Так запутанно, я уже три часа вмыкаю…
Екатерина
Огромное спасибо за столь быстрый ответ. Все сделала, как Вы написали, но ничего не изменилось.
nikko
Описал прекрасный модуль Выпадающее меню joomla http://e-kzn.ru/rasshireniya/vipadaiuschee-meniu-joomla.html горизонтальное и вертикальное
Константин
Вот здесь я подробно расписал как создать выпадающее горизонтальное меню, которое создается через панель управления wordpress, используется технология java скриптов, но все расписано подробно, так что поймет любой новичок http://mnogoblog.ru/urok-26-sozdaem-vypadayushhee-gorizontalnoe-menyu-wordpress-podrobno
T’Anik
Я имею лишь первоначальные сведения о html и css, и то умудрилась только по статье сделать выпадающее меню. Предварительно перерыла тучу сайтов с инструкциями, как это сделать. Ничего не поняла, и, соответственно, ничего не получилось. А здесь ТАК ПОНЯТНО написано, что у меня вышло с первого раза! Честь и хвала автору!!
Теперь буду разбираться, как на других страницах оставить это меню, но без дополнительных наворотов главной страницы.
Тимирлан
Спасибо большое.У меня все получилось,но как сделать кнопки немного больше?
Заранее спасибо.
Юлия
Здравствуйте!
Спасибо за урок. Все получилось. Хотелось бы только, чтобы меню располагалось по центру, сейчас оно смещено влево. Подскажите пожалуйста, что нужно добавить в код, чтобы отцентровать меню.
Константин
Для создания вертикального меню с древовидной структурой рубрик, при этом рубрики и подрубрики будут раскрываться (то есть это сможет заменить вам также плагин «Хлебные крошки»)есть отличный wordpress плагин — Collapsing Categories, о нем можете прочитать в моей статье: http://mnogoblog.ru/vertikalnoe-menyu-s-raskryvayushhimisya-rubrikami-plagin-collapsing-categories
Игорь
А на CMS Joomla 2. 5 будет работать?
Denis
Спасибо за статью!
В общем все стало, стили подключил. Но есть пару проблем, менюшка ушла под блок, и в ней нет картинки (стрелочки). помогите пожалуйста
посмотреть можно тут: http://wotplayer.pro/
Константин
Есть один вопрос новичка. У меня на хостинге нет файла style.css. Куда в таком случае вставлять css-код? спасибо, если кто подскажет
Милана
У меня получился обычный список, а не раскрывающийся, и без фона и рамок, просто один текст…Как исправить — не знаю…
Set
здравствуйте, подскажите как исправить — у меня на сайте http://skachaj.net перестало выпадать меню?
Мария
Внизу в правом углу большой кнопки Download не было, после процесса регистрации появилась, но пришло совсем не то. Жалко, а так надеялась и почти поверила в успех 🙁
Виктор
Спасибо за статью. Всё сделал, всё работает, но есть одно но.
По умолчанию меню выпадает вправо, как можно изменить, чтоб например правые меню, выпадали влево. Где это прописывать и как?
Елена
Спасибо! Ваша помощь просто неоценима, если что не понятно всегда к вашим материалам обращаюсь.
Александр
Подскажите, пожалуйста, на ktonanovenkogo.ru верхнее меню поисковик видит или нет?
Ссылок в коде страницы на эти пункты не заметил нигде на сайте… так как они все-таки индексируются? за счет покупных ссылок?
Александр
Добавил «Оповещать о новых комментариях по почте»
Candycat
Огромное спасибо за столь полезную и подробную инструкцию)))
MrVigner
Очень большое спасибо за статью! Долго я промучился чтобы сделать выпадающее вертикальное меню в горизонтальном и так и не получилось то что хотел. А тут воспользовался этим сервисом и именно то что надо! Немного только стиль подкоректировал под дизайн сайта и все 🙂
Максат из Чимкента
спасибо, огромное
Вячеслав
Дмитрий, подскажи пожалуйста
Как сделать открывающее меню при нажатие на кнопку.
К примеру, будет пункт меню — Выбрать другую услугу.
При нажатие, чтобы появлялось окошко с рубриками(страницами). Например, как на других сайтах — Выбрать город.
То есть, стандартное выпадающее меню на wp не подходит.
Как сделать горизонтальное и вертикальное выпадающее меню?
Вы знаете, что я нахожу захватывающим? Как много владельцев веб-сайтов страдают расстройством личности.
Здесь вы, как посетитель веб-сайта, ругаетесь на своем ноутбуке, когда некоторые веб-сайты мешают вам делать или находить вещи.
Но затем вы надеваете шляпу своего владельца сайта и — БАМ — вы совершенно другой человек! Все то, что вы раздражали на других сайтах, теперь гордо живет на ваших!
Я не знаю причину этого специфического поведения, но я знаю, что мы должны вылечить это.
Итак, сегодня я хотел бы поговорить об одной из тех вещей, которые вас раздражают на других сайтах, но все же есть на ваших:
Содержание | Быстрая навигация
Раскрывающиеся вертикальные, горизонтальные меню сайта в навигации.
В частности, зачем вам от них избавляться и какие есть альтернативы.
Давайте начнем с этого:
Заставить пользователей страдать от выпадающего меню — это одно из многих маленьких неудобств, которые в совокупности дают менее эффективный и менее приятный пользовательский опыт. Стоит исправить как можно больше таких раздражителей юзабилити.
Давайте рассмотрим типичные примеры выпадающих меню веб-сайтов, которые сводят ваших посетителей с ума. Они также проиллюстрируют 4 причины, по которым ваше выпадающее меню должно умереть.
4 причины, по которым ваше выпадающее меню должно умереть (и что делать вместо этого).
Причина № 1: Ваши посетители могут пропускать важные страницы.
Представьте, вы попали на этот сайт фрилансера.
Вы хотите узнать о них больше и навести курсор на этот ярлык навигации. Каковы шансы, что вы нажмете на ярлык «Моя история»?
Как меню вредит вашему сайту?
Посетители сайта — люди, а люди — существа привычки. И их привычка — не нажимать на элемент верхнего уровня в раскрывающемся меню, потому что:
- они думают, что элемент верхнего уровня — это не ссылка, а обычный текст, как на многих сайтах
- они отвлекаются на новые вещи, которые только что выпали.
Какая альтернатива выпадающим меню?
Если ваше выпадающее меню состоит из 1-2 пунктов:
- ссылки из раскрывающегося списка сделать элементами навигации верхнего уровня
- или вообще удалите их из вашей навигации и веб-сайта, как правило, хорошая идея.
Причина № 2: Вы заставляете своих посетителей работать на это и вы создали тонкий контент.
По шкале от 0 до 10, насколько вам нравится нажимать «Наша миссия» или «Наши ценности»?Представь, ты попал на этот сайт.
Какова вероятность того, что вы хотите узнать об их ценностях, миссии и одобрениях?
Но проблема здесь не только в не относящихся к делу подзаголовках. Это намного хуже.
Как выпадающее меню вредит вашему сайту?
1. Вы просите своих посетителей проделать большую работу, чтобы узнать что-то простое,
… что означает, что они не собираются это делать.
Ваши посетители просто хотят узнать о вас больше, щелкнуть где-нибудь и просто прокрутить вниз, читая.
Но неа, ты решил заставить их работать на это!
2. Вы создали страницы с тонким содержанием.
Если вы работаете в одиночку или являетесь небольшим агентством, вы ни за что не сможете рассказать о своих ценностях и миссии настолько, чтобы оправдать создание отдельных страниц.
В этом конкретном примере «О нас» ценности и страницы миссий имеют в среднем по 150 слов каждая. 3 страницы, содержащие всего 150 слов, которые не помогают вашим посетителям.
Не так много вещей, которые убивают энтузиазм ваших посетителей быстрее, чем «Наша миссия» и «Наши ценности».
Поговорите с посетителями вашего сайта как нормальный человек! Или вы так говорите в реальной жизни, когда люди спрашивают вас о вашем бизнесе?
Какая альтернатива горизонтальным и вертикальным меню сайта?
Напишите одну твердую страницу «О программе», где ваши посетители смогут найти все, что вы хотели бы, чтобы они знали, просто прокрутив вниз.
Но, допустим, у вас нет выпадающего меню для раздела «О нас».
А как насчет услуг?
Причина № 3: Вам трудно найти соответствующую информацию.
Представь, ты попал на этот сайт.
Вы хотите узнать об их услугах, наведите курсор на меню «Услуги», и эта красота исчезнет.
Ваш следующий ход?
Вероятно, нажав на ярлык «Услуги», в надежде попасть на страницу, где вы перечислите перечисленные услуги вместе с дополнительным текстом.
Попался! Нет такой вещи. Это просто текст.
Итак, вам нужно СЕЙЧАС решить, о каких услугах вы хотели бы узнать.
Не быстрое решение, особенно потому, что в 4 из 6 сервисов есть слово «маркетинг».
Но хорошо, вы нажимаете «Маркетинговый аудит» и начинаете читать.
Хотите узнать о других услугах?
Приготовься прокручивать, парить, выбирать и нажимать, мой друг.
Хотите вернуться к первому интересному сервису?
Какой выпадающий элемент был снова? Нет, не этот. Попробуйте еще раз!
Как это вредит вашему сайту?
Ваши посетители могут пропустить услугу, которая им действительно нужна (и вы можете потерять деньги).
Основная проблема здесь в том, что нет выделенного пространства, где ваши услуги привлекают все внимание ваших посетителей.
Вы просите своих посетителей выбрать один из сервисов, пока они окружены остальным сайтом с его визуальными отвлекающими факторами.
Они не могут сосредоточиться так!
Не удивительно, что они не будут проверять многие из ваших сервисных страниц. Может быть, один или два, но это будет так, потому что вы просите их выполнить все упражнения по прокрутке, зависанию, выбору и щелчку.
И это было только на рабочем столе! На мобильном телефоне, если вы не правильно реализуете макет выпадающего меню и не сразу видите элементы подменю, у ваших бедных посетителей сайта будет бесконечный список ссылок:
Какая альтернатива создания выпадающего меню?
Пусть посетители вашего сайта спокойно решат, какие услуги они хотели бы проверить, без давления выпадающего списка или отвлечения на другие ссылки.
Ряд вариантов:
- Создать страницу под названием «Услуги»
- Добавьте в нее свои отдельные сервисы с заманчивым абзацем и визуально заметной ссылкой на соответствующую страницу для каждой услуги.
- В вашей навигации, ссылка только на главную страницу услуг без каких-либо раскрывающихся списков
… Без выпадающего списка под меткой навигации по сервисам, которая ссылается на это:
Причина № 4: Вы сводите посетителей вашего сайта с ума.
Какая альтернатива?Если вы абсолютно уверены, что вам нужно много ссылок в навигации, и они не помещаются на верхнем уровне, внедрите все свое меню навигации в виде мегаменю.
Не стесняйтесь давать всем ссылкам достаточно места на экране, делая его полноразмерным. Разработайте свое меню, чтобы облегчить сканирование с использованием различных шрифтов и значков.
Что-то вроде этого:
4 альтернативы выпадающему меню, которое улучшит ваш сайт.
- Если у вас есть только один выпадающий элемент:
- либо поместите его как элемент навигации верхнего уровня
- или удали это.
- Если это имеет смысл, объедините информацию на отдельных страницах из раскрывающегося меню и сделайте из нее одну страницу (например, если у вас есть раскрывающееся меню в разделе «О программе» на верхнем элементе навигации).
- Если у вас есть раскрывающееся меню Службы:
- либо используйте только пункт «Услуги» верхнего уровня, который ведет на выделенную страницу «Услуги»
- или, если вы предлагаете только 1-2 услуги, удалите элемент навигации «Службы» и создайте ссылку на соответствующие службы прямо из навигации верхнего уровня.
- Если у вас нет выбора, кроме как предложить своим посетителям множество вариантов навигации, используйте мега-меню.
Что бы вы ни делали, убедитесь, что ваше меню навигации короткое, наглядное и понятное .
Заключительные слова мудрости.
Будьте внимательным к посетителям сайта.
В следующий раз, когда вы проверяете чей-то веб-сайт, чтобы узнать о нем больше или узнать, какова политика компании, обратите внимание на то, какие преимущества веб-дизайна вас раздражают. Какая информация отсутствует. Что трудно читать
Тогда подумайте о своем сайте. Скорее всего, вы делаете те же ошибки.
✔️ Что такое выпадающее меню?
Это меню в верхней навигации сайта которое показывает подкатегории.
✔️ В чем недостатки выпадающего меню?
Пользователи не видят, что скрывается под заголовком. Им требуются дополнительные действия, которые многие не совершают.
✔️ Стоит ли отказаться от выпадающего меню?
Откажитесь от выпадающих меню. Вы прячете от пользователя информацию.
✔️ Что делать если уже есть выпадающее меню?
Обязательно сделайте ссылкой пункт навигации который раскрывает меню.
✔️ Как сделать горизонтальный выпадающий список?
Установите раскрывающийся список, включив раскрывающееся меню атрибута data-dropdown и class в контейнер меню. Внутри тега li элемента ul вы можете создать еще один новый тег ul для создания множества уровней раскрывающегося списка.
✔️ Как создать горизонтальное раскрывающееся меню в HTML?
Используйте любой элемент, чтобы открыть раскрывающееся меню, например элемент button, a или p. Используйте элемент контейнера (например, div), чтобы создать раскрывающееся меню и добавить в него раскрывающиеся ссылки. Оберните элемент div вокруг кнопки и div, чтобы правильно расположить раскрывающееся меню с помощью CSS.
✔️ Как изменить горизонтальное меню на вертикальное в редакторе Wix?
Изменение меню сайта с горизонтального на вертикальное в редакторе Wix.
Щелкните свое меню в редакторе.
Нажмите клавишу Delete на клавиатуре.
Щелкните Добавить в левой части редактора.
Щелкните по меню.
Перетащите новое меню на свою страницу.
✔️ Как создать вертикальное раскрывающееся меню в CSS?
Добавьте таблицу стилей и форму или HTML-страницу. Затем на странице HTML или веб-форме . NET добавьте «Div» и назовите его «divMenu».
✔️ Как создать раскрывающееся меню?
На новом листе введите записи, которые должны появиться в раскрывающемся списке. Выберите ячейку на листе, в которой вы хотите открыть раскрывающийся список. Перейдите на вкладку «Данные» на ленте, затем «Проверка данных». На вкладке Параметры в поле Разрешить щелкните Список. Щелкните в поле Источник, затем выберите диапазон списка.
Получить экспертную критику вашего сайта в компании TopUser.Pro
Плавно открывающееся меню с помощью CSS. Вертикальное выпадающее меню на css: как его сделать
От автора: всех приветствую. Почему-то выпадающее меню у веб-мастеров ассоциируется со скриптами, но уже давно сделать такую навигацию можно абсолютно спокойно на чистом css. Причем такое меню будет ничем не хуже. Сегодня я вам покажу, как создать в css выпадающее меню. Поделюсь, так сказать, рецептом.
План урока и разметка нашего меню
В общем-то, сначала определимся с тем, как будем создавать само меню. В html5 стандартным способом считается создавать его в контейнере nav с помощью маркированного списка. Давайте именно так и сделаем. Маркеры мы позже уберем с помощью css, в меню они нам совершенно не нужны.
Собственно, я сразу напишу в html разметку с вложенными списками. То есть наши список будет двухуровневым – в нем будут другие списки. А именно, на каждый пункт 1 список, который и будет формировать выпадающее меню.
Тут есть важный момент, который заключается в том, что вам, возможно, не нужно каждый пункт делать выпадающим, а лишь некоторые. Без проблем, тогда в пунктах без выпадения просто не создаем вложенных списков.
Собственно, вот она, вся разметка:
Пункт1 Подпункт Подпункт Подпункт Пункт2 Подпункт Подпункт Подпункт Пункт3 Подпункт Подпункт Подпункт Пункт4 Подпункт Подпункт Подпункт |
Я понимаю, что она огромна. В этом-то и проблема вложенных списков, что требуется писать много кода. Но учитывайте тот факт, что мы делаем 4 основных пункта и для каждого будет выпадающее меню.
Собственно, я задал всей навигации идентификатор nav, а всем вложенным спискам – стилевой класс second, чтобы понимать, что они являются вложенными.
Отлично, разметка у нас готова, можно посмотреть на результат:
Да уж, выглядит ужасно. Но сейчас мы включим в работу css и уже через несколько минут наша навигация преобразится. Давайте работать.
Пишем css-стили
Первое, что я сделаю, это сброшу все отступы по умолчанию для всех элементов. Они нам будут только мешать, лучше зададим потом отступы сами, где это понадобится.
*{ margin: 0; padding: 0; }
margin : 0 ; padding : 0 ; |
#nav{ height: 70px; } #nav ul{ list-style: none; }
#nav{ height : 70px ; #nav ul{ list — style : none ; |
Теперь нам нужно, собственно, решить, каким будет наше меню. Горизонтальным или вертикальным? Я предлагаю сначала сделать горизонтальное и посмотреть все на его примере. Для этого нужно написать такие стили:
#nav > ul > li{ float: left; width: 180px; position: relative; }
#nav > ul > li{ float : left ; width : 180px ; position : relative ; |
Заметьте, что с помощью знака > мы обращаемся к пунктам списка, который непосредственно вложены в ul, а тот непосредственно вложен в nav. Это очень важно, так как позволяет не применить стиль к пунктам вложенных списков. Дело в том, что по моей задумке в главном списке пункты будут располагаться горизонтально, а во вложенных – вертикально.
Но вы, конечно, можете делать по-другому, в согласии со своей задумкой. Вы можете сделать так, чтобы все пункты были в одну строчку.
В любом случае, вышеприведенный код, я надеюсь, вы понимаете. Он заставляет пункты главного списка прижиматься к левому краю, так что все они встают в одну строку, хотя и являются блочными элементами. Также я задал им явную ширину и относительное позиционирование.
Для чего позиционирование? Оно необходимо для того, чтобы потом абсолютно позиционировать вложенные списки. Если вы изучали позиционирование в css, то наверняка знаете, что если задать блоку относительное позиционирование, то все элементы в нем можно будет позиционировать абсолютно внутри именно этого блока, а не всего окна браузера.
Тем временем, вот что у нас уже получилось:
По этому скриншоту вы можете уже представить себе примерный результат. Конечно, нам еще предстоит красиво оформить пункты, чтобы глаза не умоляли о пощаде при просмотре навигации.
#nav li a{ display: block; background: #90DA93; border: 1px solid #060A13; color: #060A13; padding: 8px; text-align: center; text-decoration: none; } #nav li a:hover{ background: #2F718E; }
#nav li a{ display : block ; background : #90DA93; border : 1px solid #060A13; color : #060A13; padding : 8px ; text — align : center ; text — decoration : none ; #nav li a:hover{ background : #2F718E; |
Во-первых, сами ссылки нужно сделать блочными. Это необходимо для того, чтобы работали внутренние отступы и корректно применялись все свойства. Далее указываю цвета фона, текста, параметры рамки, внутренние отступы и выравнивание текста по центру. Наконец, отменяю подчеркивание ссылок.
Все эти параметры не обязательно прописывать так, как это сделал я. Цвета вы можете выбрать произвольно, рамку сделать другую или вообще не использовать, отступы можно уменьшать или увеличивать.
Заметьте, что в данном случае мы не использовали знак >, поэтому указанные правила применятся ко всем ссылкам, в том числе и тем, что находятся во вложенных пунктах. Итак, теперь имеем следующее:
Отлично, но ведь вы понимаете, что подпункты не должны быть видно, они должны раскрываться при наведении на нужный пункт. Без этого наше меню похоже на таблицу. Что ж, самое время спрятать вложенные пункты.
#nav li .second{ display: none; position: absolute; top: 100%; }
#nav li . second{ display : none ; position : absolute ; top : 100 % ; |
Во-первых, скрываем полностью вложенные списки. Во-вторых, задаем им абсолютное позиционирование и координату top: 100%. Это означает, что выпадающее меню будет отображаться четко под основным пунктом, которому принадлежит, четко под 100% высоты этого пункта.
Теперь мы видим на веб-странице только основное меню, что нам и нужно.
Реализуем выпадение
Нам осталось сделать самое главное – реализовать само выпадение. В этом нет ничего сложного, смотрите на этот код:
#nav li:hover .second{ display: block; }
#nav li:hover .second{ display : block ; |
Этот код будет работать безукоризненно. При наведении на пункт основного меню, вложенный список будет становиться видимым. Причем только тот список, что вложен в пункт, на который наводится курсор.
Есть только одна незначительная проблема – ширина вложенных пунктов не соответствует ширине основных. Но это очень легко решается дописыванием соответствующих стилей:
#nav li li{ width: 180px; }
#nav li li{ width : 180px ; |
Все, проблема решена:
Все работает отлично. При наведении на основной пункт появляется соответствующее ему выпадающее меню. Если убрать курсор в сторону – оно пропадает. Если перевести курсор на сами вложенные пункты, то можно будет по ним кликнуть и перейти в нужный раздел сайта. Таким образом, мы сделали с вами очень простое и легкое выпадающее меню абсолютно без скриптов.
Переделываем меню в вертикальное
Ну хорошо, с горизонтальной навигацией мы с вами полностью разобрались, но ведь помимо нее на сайтах очень часто встречается и вертикальная и она тоже может быть выпадающей. На самом деле переделать меню с горизонтального на вертикальное очень легко, нам придется изменить буквально пару строк кода.
Во-первых, вам нужно будет убрать float:left у главных пунктов списка. Именно это свойство способствует тому, что наши пункты отображаются в одну строку, но зачем нам это, если навигация должна быть вертикальной?
Теперь остается изменить правила для селектора #nav li .second, то есть для вложенных списков, а именно, их нужно немного по-другому позиционировать. Вот так:
#nav li .second{ display: none; position: absolute; left: 100%; top: 0; }
#nav li .second{ display : none ; position : absolute ; left : 100 % ; top : 0 ; |
То есть необходимо прописать две координаты вместо одной. Во-первых, в случае с горизонтальной навигацией я говорил, что по задумке пункты вложенных меню должны отображаться под основными пунктами. В случае с вертикальным меню это не подходит – пункты должны отображаться сбоку.
Поэтому изменяем top: 100% на left: 100%. Кроме этого, координата top нам тоже нужна. Задаем ей 0, чтобы вложенное меню находилось на одном уровне с пунктом, которому соответствуют.
Все, теперь все работает так, как надо. Можете протестировать. Как видите, я не врал, когда говорил, что придется переписать всего несколько строк кода.
Горизонтальное меню с несколькими уровнями
Используя примерно такой же подход вы можете создать больше уровней меню, если это сильно необходимо. Например, давайте создадим для четвертого пункта главного меню список, который будет вложен в один из подпунктов.
Михаил сб, 09/20/2014 — 12:28
Что-то мой комментарий не виден — дублирую:
===========
Спасибо, но у меня (под Инт.Экспл-8) меню не выпадает. Т.е. не работает строка «ul.nav li:hover ul {display: block;}»
Подскажите, в чем дело?
Есть пожедания по изложению материала:
Хорошо бы в этой строке (ul.aaaaa li:hover ul {display: block;}) растолковать, какая ее часть отвечает за «выпадение меню», а какая — за скрывание пунктов более глубокого уровня вложенности
Хорошо бы в примерах каждую строку снабжать комментарием, что она делает.
В частности, неясно, зачем нужна строка «
Выпадающие элементы. Компоненты · Bootstrap. Версия v4.0.0
Переключайте контекстные оверлеи для отображения списков ссылок и многого другого с помощью модуля выпадающих меню Bootstrap.
Обзор
Выпадающие элементы — это переключаемые, контекстные элементы поверхностного наложения для отображения списков ссылок и т.п. Они интерактивны благодаря плагину JavaScript в BS4. Функциональность toggle в выпадающих элементах запускается по клику, а не по наведению – это сделано умышленно.
Выпадающие элементы «построены» на сторонней библиотеке Popper.js, которая обеспечивает динамическое позиционирование и определение размера окна просмотра. Обязательно включите popper.min.js перед JavaScript Bootstrap или используйте bootstrap.bundle.min.js
/ bootstrap.bundle.js
, который содержит Popper. js.
Если вы компилируете наши JS файлы, необходим util.js
.
Доступность
Стандарт WAI ARIA описывает и определяет виджет role="menu"
как настоящий виджет, но лишь для меню «а-ля приложение», запускающих действия или функции. Меню ARIA могут содержать лишь пункты меню, чекбоксы, «радио-кнопки», группы «радио-кнопок» и подменю.
Выпадающие элементы Bootstrap, с другой стороны, спроектированы для решения множества задач и могут работать в разных структурах разметки. Например, можно создать выпадающие элементы, содержащие дополнительные поля ввода и элементы контроля форм, такие как поиск или поле ввода логина. По этой причине BS4 не «ожидает» (и не добавляет автоматически) ни один из атрибутов (role
и aria-
), необходимых для меню согласно стандарту ARIA.
Однако Bootstrap всегда добавляет встроенную поддержку для большинства стандартных взаимодействий меню и клавиатуры, таких как возможность двигаться через отдельные элементы класса .dropdown-item
кнопками курсора на клавиатуре и закрывать меню кнопкой ESC.
Примеры
Оберните «контролирующий» элемент (ссылку или кнопку) выпадающего элемента и выпадающее меню классом .dropdown
или другим элементом с position: relative;
. При необходимости выпадающие элементы можно запускать из элементов <a>
или <button>
.
Выпадающие элементы одинарных кнопок
Любую одинарную кнопку .btn
можно превратить в «контролирующий» элемент (кнопка открытия\скрытия) при помощи некоторых изменений разметки. Вот как вы можете это сделать также и с элементами <button>
:
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Кнопка выпадающего списка
</button>
<div aria-labelledby="dropdownMenuButton">
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
</div>
</div>
А вот так — с <a>
элементами:
<div>
<a href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Выпадающая ссылка
</a>
<div aria-labelledby="dropdownMenuLink">
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
</div>
</div>
Самое забавное, что это можно сделать с любым из вариантов кнопок: «главная, вторичная, успех, инфо, предупреждение, опасность»:
Предупреждение<!-- Example single danger button -->
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Action
</button>
<div>
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
<div></div>
<a href="#">Separated link</a>
</div>
</div>
Выпадающие элементы кнопок с разделенными зонами
По такому же принципу создавайте выпадающие элементы в кнопках с разделенными зонами, используя почти такую же разметку, как в пункте выше, но с добавлением класса . dropdown-toggle-split
для правильного спейсинга вокруг выпадающего элемента.
Тут используется дополнительный класс, который уменьшает на 25% горизонтальный паддинг padding
с обеих сторон выпадающей «каретки» и удаляет margin-left
, добавленный для выпадающих элементов обычных кнопок. Эти изменения позволяют центрировать выпадающую «каретку» в разделенной кнопке и обеспечивают более подходящий размер «зоны клика» вблизи главной кнопки.
<!-- Example split danger button -->
<div>
<button type="button">Action</button>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>Toggle Dropdown</span>
</button>
<div>
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
<div></div>
<a href="#">Separated link</a>
</div>
</div>
Размеры
Выпадающие элементы кнопок работают с кнопками любых размеров, включая кнопки по умолчанию и кнопки с выпадающими элементами с разделенными зонами.
<!-- Large button groups (default and split) -->
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Large button
</button>
<div>
...
</div>
</div>
<div>
<button type="button">
Large button
</button>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>Toggle Dropdown</span>
</button>
<div>
...
</div>
</div>
<!-- Small button groups (default and split) -->
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Small button
</button>
<div>
...
</div>
</div>
<div>
<button type="button">
Small button
</button>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>Toggle Dropdown</span>
</button>
<div>
. ..
</div>
</div>
«Выпадающий вверх»
Добавьте класс .dropup
и выпадающий элемент будет «выпадать» вверх.
<!-- Default dropup button -->
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropup
</button>
<div>
<!-- Dropdown menu links -->
</div>
</div>
<!-- Split dropup button -->
<div>
<button type="button">
Split dropup
</button>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>Toggle Dropdown</span>
</button>
<div>
<!-- Dropdown menu links -->
</div>
</div>
«Выпадающий вправо»
Добавьте класс . dropright
и выпадающий элемент будет «выпадать» вправо.
<!-- Default dropright button -->
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropright
</button>
<div>
<!-- Dropdown menu links -->
</div>
</div>
<!-- Split dropright button -->
<div>
<button type="button">
Split dropright
</button>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>Toggle Dropright</span>
</button>
<div>
<!-- Dropdown menu links -->
</div>
</div>
«Выпадающий влево»
Добавьте класс . dropleft
и выпадающий элемент будет «выпадать» влево.
<!-- Default dropleft button -->
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropleft
</button>
<div>
<!-- Dropdown menu links -->
</div>
</div>
<!-- Split dropleft button -->
<div>
<div role="group">
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>Toggle Dropleft</span>
</button>
<div>
<!-- Dropdown menu links -->
</div>
</div>
<button type="button">
Split dropleft
</button>
</div>
Исторически содержимым выпадающих элементов всегда были ссылки, но BS4 изменил это. Сейчас вы можете использовать в качестве содержимого выпадающих элементов <button>
, а не только <a>
.
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div aria-labelledby="dropdownMenu2">
<button type="button">Action</button>
<button type="button">Another action</button>
<button type="button">Something else here</button>
</div>
</div>
По умолчанию выпадающее меню автоматически расположено в 100% от вершины и на левой стороне родителя. Добавьте класс .dropdown-menu-right
к элементу класса .dropdown-menu
для выравнивания выпадающего меню по правой стороне.
Внимание! Выпадающие элементы позиционируются благодаря Popper. js (за исключением случаев, когда они содержатся в navbar).
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Right-aligned menu
</button>
<div>
<button type="button">Action</button>
<button type="button">Another action</button>
<button type="button">Something else here</button>
</div>
</div>
Добавьте заголовок, чтобы обозначить секции действий любого выпадающего меню.
<div>
<h6>Dropdown header</h6>
<a href="#">Action</a>
<a href="#">Another action</a>
</div>
Разделяйте группы родственных элементов меню разделителем.
<div>
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
<div></div>
<a href="#">Separated link</a>
</div>
Расположите форму внутри выпадающего меню, и используйте утилиты паддинга или марджина для ее уплотнения.
<div>
<form>
<div>
<label for="exampleDropdownFormEmail1">Email address</label>
<input type="email" placeholder="[email protected]">
</div>
<div>
<label for="exampleDropdownFormPassword1">Password</label>
<input type="password" placeholder="Password">
</div>
<div>
<input type="checkbox">
<label for="dropdownCheck">
Remember me
</label>
</div>
<button type="submit">Sign in</button>
</form>
<div></div>
<a href="#">New around here? Sign up</a>
<a href="#">Forgot password?</a>
</div>
<form>
<div>
<label for="exampleDropdownFormEmail2">Email address</label>
<input type="email" placeholder="email@example. com">
</div>
<div>
<label for="exampleDropdownFormPassword2">Password</label>
<input type="password" placeholder="Password">
</div>
<div>
<input type="checkbox">
<label for="dropdownCheck2">
Remember me
</label>
</div>
<button type="submit">Sign in</button>
</form>
Добавьте класс .active
к элементу выпадающего меню для его стилизации как «активированного».
<div>
<a href="#">Regular link</a>
<a href="#">Active link</a>
<a href="#">Another link</a>
</div>
Добавьте класс .disabled
к элементу выпадающего меню для его стилизации как «деактивированного».
<div>
<a href="#">Regular link</a>
<a href="#">Disabled link</a>
<a href="#">Another link</a>
</div>
Использование
Через атрибуты или JavaScript, плагин выпадающих элементов изменяет (показывает скрытоесодержимое) состояние содержимого (выпадающие меню) изменением класса .show
элемента родительского списка. Атрибут data-toggle="dropdown"
отвечает за закрытие выпадающих меню на уровне приложения, так что будет неплохой идеей всегда использовать данный атрибут.
На устройствах, активируемых касанием, открытие выпадающего элемента добавляет пустые обработчики ($.noop
) mouseover
к непосредственным «детям» элемента <body>
. Этот, по общему мнению, некрасивый хак (без которого любое касание в iOS вне выпадающего элемента не закроет выпадающий элемент) необходим для обработки проблемы с делегированием событий в iOS. Как только выпадающий элемент закрыт, эти дополнительные пустые обработчики удаляются.
Через атрибуты
Добавьте к ссылке или кнопке атрибут data-toggle="dropdown"
для скрытия\показа выпадающего элемента.
<div>
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
</button>
<div aria-labelledby="dLabel">
...
</div>
</div>
Через JS
Управляйте выпадающими элементами с помощью JavaScript:
$('.dropdown-toggle').dropdown()
data-toggle="dropdown"
still requiredНезависимо от того, управляете вы выпадающим элементом через JavaScript или атрибутами, атрибут data-toggle="dropdown"
всегда необходим в элементе, запускающем выпадающий элемент.
Параметры
Передавайте параметры через JavaScript или атрибуты. Если используются атрибуты, добавляйте название параметра к data-
как в data-offset=""
.
Название | Тип | По умолч. | Описание |
---|---|---|---|
offset | number | string | function | 0 | Смещение выпадающего элемента относительно его триггера. См. отступы Popper.js |
flip | boolean | true | Позволяет выпадающему элементу «перевернуться», если произошло перекрытие другого элемента. Больше информации: flip docs. |
boundary | string | element | ‘scrollParent’ | Граница ограничения переполнения выпадающего меню. Принимает значения 'viewport' , 'window' , 'scrollParent' или ссылку HTMLElement (только для JavaScript). Для получения дополнительной информации обратитесь к документации preventOverflow от Popper.js. |
Обратите внимание, что если для boundary
установлено значение, отличное от 'scrollParent'
, позиция position: static
применяется к контейнеру .dropdown
.
Методы
Метод | Описание |
---|---|
$().dropdown('toggle') |
Задействует поведение toggle в выпадающем меню данного навбара или при навигации «TAB»ом. |
$().dropdown('update') |
Обновляет позицию «выпадения» элемента. |
$().dropdown('dispose') |
Уничтожает выпадающий элемент. |
События
Все события выпадающих элементов наступают в родительском элементе класса . dropdown-menu
и несут свойство relatedTarget
, значение которого равно элементу «якоря» (ссылка, т.е. <a>
), запускающего функциональность toggle.
Событие | Описание |
---|---|
show.bs.dropdown |
Это событие наступает немедленно по вызову экземпляра метода show. |
shown.bs.dropdown |
Это событие наступает, когда выпадающий элемент стал видимым юзеру (будет ждать завершения CSS-переходов). |
hide.bs.dropdown |
Это событие наступает немедленно по вызову экземпляра метода hide. |
hidden.bs.dropdown |
Это событие наступает, когда выпадающий элемент стал невидимым юзеру (будет ждать завершения CSS-переходов). |
$('#myDropdown'). on('show.bs.dropdown', function () {
// do something…
})
Плавно открывающееся меню с помощью CSS
Осуществим нашу задумку с помощью самого обычного CSS. В следующей статье, если не забуду, то опишу этот же эффект с помощью jQuery. Но а пока, давайте приступим к разбору данного метода. Но, сначала предложу посмотреть, что получится в итоге:
Первым делом, давайте напишем HTML код нашего меню. Меню будет простейшим. Для примера у него будет 2 пункта у каждого из которых будет выпадающий список с подпунктами.
<nav> <ul> <li> <a href="#">пункт 1</a> <ul> <li><a href="#">Выпадающий пункт 1</a></li> <li><a href="#">Выпадающий пункт 2</a></li> <li><a href="#">Выпадающий пункт 3</a></li> </ul> </li> <li> <a href="#">пункт 2</a> <ul> <li><a href="#">Выпадающий пункт 1</a></li> <li><a href="#">Выпадающий пункт 2</a></li> <li><a href="#">Выпадающий пункт 3</a></li> </ul> </li> </ul> </nav>
Думаю тут все понятно, самое простое 2-х уровневое меню. Как и говорил, меню имеет два главных пункта, можете добавить сколько угодно, если нужно. Дальше нужно просто добавить стили, которые и сделают всю магию 🙂
#slow_nav > ul{ width: 500px; margin:25px auto 0; } #slow_nav > ul > li{ list-style: none; display: inline-block; position:relative; padding:0; } #slow_nav a{text-decoration:none;} #slow_nav > ul > li > a{ font-size:18px; padding:5px; background-color:#333; color:#fff; } #slow_nav li ul{ position:absolute; list-style:none; text-align:center; top:15px; font-size:15px; left:0; margin:0; padding:0; /* Данные строки нужны для правильной работы анимации */ max-height:0px; overflow:hidden; -webkit-transition:max-height 0.4s linear; -moz-transition:max-height 0.4s linear; transition:max-height 0. 4s linear; /* конец */ } #slow_nav li:hover ul{ max-height:300px; } #slow_nav li ul li{ background-color:#333; border-bottom:1px solid #888; } #slow_nav li ul li:last-child{ border-bottom:none; } #slow_nav li ul li a{ padding:5px 12px; color:#fff; display:block; } #slow_nav li ul li:hover{ background-color:#444; } #slow_nav li ul li:first-child{ margin-top:25px; position:relative; } #slow_nav li ul li:first-child:before{ content:''; position:absolute; width:1px; height:1px; border:5px solid transparent; border-bottom-color:#333; left:10px; top:-10px; }
Код CSS не маленький., но по своей сути не сложный. Если Вы владеете навыками верстки, то запросто разберетесь что и как. Я лишь остановлюсь на некоторых моментах, которые являются важными.
Первым делом это сама анимация. Нужный код выделен комментариев в коде — /* Данные строки нужны для правильной работы анимации */. Удалять из нельзя, в противном случаи анимация перестанет работать. В данном отрезке кода, изначально мы задаем высоту в ноль пикселей —
max-height:0px; и прописываем свойство overflow:hidden;, чтобы скрыть наше дочернее меню, то есть выпадающее. Дальше уже прописываем кроссбраузерное свойство transition, которое совершит анимацию.
-webkit-transition:max-height 0.4s linear; -moz-transition:max-height 0.4s linear; transition:max-height 0.4s linear;
Тут можете изменить разве что время анимации. В данный момент время задано 0.4 секунды. Сразу после того как задали анимацию, добавлено свойство , для задания новой высоты при наведении на главные пункты меню:
#slow_nav li:hover ul{ max-height:300px; }
Тут такая картинка. Высота задается максимальная фиксированная, если у Вас высота выпадающего меню будет побольше, то и значение меняйте на больше. В противном случаи Ваше меню обрежет по высоте 300 пикселей.
Далее уже задаем стили для выпадающего меню, так что на них подробно останавливаться не буду. Ту как бы и все. Это и есть весь способ. Он простой и действенный и справляется со своей задачей на все 100%.
Данный способ можно применять не только к самописным меню но и к тем же динамическим меню, которые создаются системами управления сайтом, например WordPress. Для этого нужно немного подправить стили и все. То есть первый HTML код использовать не нужно, только стили. В стилях нужно заменить имя айди #slow_nav на то что будет у Вас, ну и возможно подправить еще что-то по мелочам. Подробно останавливаться не буду. Для каждого случая нужен персональный подход, так что уж извините 🙂 Я дал идею и способ, а Вам решать, применять его или нет.
На этом все, спасибо за внимание. 🙂
CSS: Выпадающее меню с задержкой
Обычное выпадающие css-меню сделанное с помощью переключения display:none;
/display:block;
повешенного на hover обладает двумя раздражающими недостатками:
— подменю показывается мгновенно, как только курсор мыши попал в область родительского пункта
— подменю мгновенно пропадает, как только курсор вышел за пределы подменю
Пример такого меню:
<ul> <li> <a href="#">item</a> <ul> <li>subitem 1</li> <li>subitem 2</li> </ul> </li> </ul> <style> . menu { margin: 0; padding: 0; list-style: none; } .menu .menu-item { float: left; margin: 0 1px 0 0; padding: 0; background: #E1E1E1; } .menu .menu-item a { display: block; padding: 5px 10px; } .menu .submenu { display: none; /* По умолчанию скрываем подменю */ position: absolute; margin: 0; padding: 0; list-style: none; background: #E1E1E1; } .menu .menu-item:hover .submenu { display: block; /* Показываем подменю при ховере */ } .menu .submenu-item { margin: 0; padding: 5px 10px; } </style>
Демо
Чтобы создать небольшую задержку перед показом и скрытием подменю раньше приходилось использовать javascript, но теперь наткнулся на css вариант.
Весь фокус в свойстве transition
, а точнее его подсвойстве transition-delay
, которое позволяет добавить задержку перед показом анимации:
.menu .submenu { opacity: 0; /* По умолчанию скрываем подменю */ visibility: hidden; transition-property: opacity, visibility; /* Важно чтобы transition применялось к обоим свойствам */ transition-duration: 0. 2s; /* Добавляем анимацию 0.3 сек. */ transition-delay: 0.15s; /* Добавляем задержку в 0.15 сек. */ } .menu .menu-item:hover .submenu { opacity: 1; /* Показываем подменю при ховере */ visibility: visible; }
Демо
Поскольку анимацию нельзя вешать на display
, то для скрытия подменю приходится использовать связку opacity:0; visibility:hidden;
.
Открыть всплывающее окно из навигационного меню WordPress
Это вторая из 5 статей, описывающих методы настройки триггера Click Open. Используйте этот метод, чтобы установить триггер для элемента навигации.
Метод №1: выберите всплывающее окно из раскрывающегося списка «Запуск всплывающего окна»
Примечание 1: Этот подход автоматизирует процесс установки триггера Click Open с помощью метода № 2 в статье «Триггер: нажмите Open — Обзор и методы» (см. Раздел « Пять доступных методов для установки Щелкните «Открыть триггер» ).
- Из области администрирования WP перейдите к Внешний вид -> Меню
- Добавить или изменить пункт меню
- Выберите всплывающее окно в раскрывающемся меню под Запустить всплывающее окно Label. В раскрывающемся списке будут отображаться только всплывающие окна со статусом Опубликован .
- Сохраните меню и обновите свой сайт — теперь этот пункт меню будет вызывать всплывающее окно!
Примечание 2: Сайты, на которых запущена тема или плагин с функциональностью «мегаменю», могут испытывать трудности при настройке или отображении всплывающего окна из элемента меню навигации сайта. Пожалуйста, обратитесь к нашей документации, чтобы узнать, как решить эту проблему.
Метод № 2: добавление настраиваемой ссылки в меню
- Из области администрирования WP перейдите к Внешний вид -> Меню
- Щелкните раскрывающееся меню «Пользовательские ссылки».
- Введите вашу всплывающую ссылку в поле URL: « # popmake-123 », где «123» — это идентификационный номер вашего всплывающего окна. Идентификатор всплывающего окна можно найти в панели администратора WP на экране «Все всплывающие окна» , CSS-классы (столбец).
- Задайте желаемый текст ссылки и щелкните Добавить в меню . Сохраните меню и обновите свой сайт.
- Ваш пункт меню теперь будет вызывать всплывающее окно!
Метод № 3: Добавить класс в пункт меню
- В административной области WordPress перейдите к Внешний вид -> Меню
- Щелкните «Параметры экрана» в правом верхнем углу экрана.
- Установите флажок «Классы CSS». Закройте панель «Параметры экрана ». .
- Щелкните по пункту меню. Теперь вы увидите поле для добавления ваших собственных классов CSS внизу.
- Добавьте правильный класс popmake- {integer} в свой пункт меню, как показано выше.
- В администраторе WP откройте «Конструктор всплывающих окон» >> «Все всплывающие окна» >> «Классы CSS» (столбец). Найдите созданный класс Popup Maker в столбце «Классы CSS» и введите его в поле «Классы CSS» на странице «Меню».
- Сохраните меню и обновите сайт. В передней части сайта щелкните целевой пункт меню, чтобы отобразить всплывающее окно.
Как создать раскрывающееся меню в CSS
Что такое выпадающие списки?Выпадающие меню используются в CSS для скрытия предопределенного списка внутри кнопки.
Примеры:
Затем вы должны настроить классы в CSS следующим образом:
. падать {
положение: относительное;
дисплей: встроенный блок;
}
.dropbtn {
цвет фона: красный;
отступ: 10 пикселей;
}
.dropdown-content {
дисплей: нет;
позиция: абсолютная;
}
.dropdown: hover .dropdown-content {
дисплей: блок;
}
Вам нужны отдельные классы div для создания кнопки и еще один div для разделения списка того, что содержит кнопка.
Пример
# myNav1 {
высота: 0;
ширина: 50%;
положение: фиксированное;
z-индекс: 6;
верх: 0;
слева: 0;
цвет фона: #ffff;
переполнение: скрыто;
переход: 0. 3с;
непрозрачность: 0,85;
}
# myNav2 {
высота: 0;
ширина: 50%;
положение: фиксированное;
z-индекс: 6;
внизу: 0;
справа: 0;
цвет фона: #ffff;
переполнение: скрыто;
переход: 0,3 с;
непрозрачность: 0,85;
}
.overlay-content {
положение: относительное;
ширина: 100%;
выравнивание текста: центр;
маржа сверху: 30 пикселей;
}
# myNav1-content {
верх: 12%;
осталось: 5%;
дисплей: нет;
}
# myNav2-content {
верх: 12%;
справа: 10%;
дисплей: нет;
}
Дополнительная информация о раскрывающихся списках CSS:
Всплывающие меню / раскрывающиеся списки
Всплывающие меню и раскрывающиеся списки — это объекты, которые позволяют пользователю выбирать из списка.Вы управляете элементами, отображаемыми во всплывающем меню, с помощью массива или списка выбора.
Имена «Всплывающее меню» и «Выпадающий список» относятся к одним и тем же объектам; «Всплывающее меню» — это часть терминологии Mac OS, а «Выпадающий список» — часть Windows.
Как показано в следующем примере, внешний вид этих объектов немного отличается в зависимости от платформы:
Windows
Mac OS
Массив — это список значений в памяти, на который ссылается имя массива (см. Массивы и Объекты формы).Всплывающее меню / раскрывающийся список отображает массив в виде списка значений, когда вы щелкаете по нему.
Вы инициализируете объекты всплывающего меню / раскрывающегося списка, загружая список значений в массив. Это можно сделать несколькими способами:
- Введите список значений по умолчанию в свойствах объекта. Для этого нажмите кнопку Edit … в теме «Источник данных» в Списке свойств. Дополнительные сведения см. В разделе Списки значений по умолчанию. Значения по умолчанию загружаются в массив автоматически.Вы можете ссылаться на массив, используя имя переменной, связанной с объектом.
- Перед отображением объекта выполните код, который присваивает значения элементам массива. Например:
ТЕКСТ МАССИВА (города; 6)
aCities {1}: = "Филадельфия"
aCities {2}: = "Питтсбург"
aCities {3}: = "Grand Blanc"
aCities {4}: = "Плохой топор"
aCities {5}: = "Frostbite Falls"
aCities {6}: = "Green Bay"
В этом случае имя переменной, связанной с объектом в форме, должно быть aCities .
Этот код можно поместить в метод формы и выполнить при запуске события формы «При загрузке». - Перед отображением объекта загрузите значения списка в массив с помощью команды LIST TO ARRAY. Например:
СПИСОК В МАССИВЕ («Города»; aCities)
В этом случае также имя переменной, связанной с объектом в форме, должно быть aCities .
Этот код будет запускаться вместо операторов присваивания, показанных выше.
Если вам нужно сохранить выбор пользователя в поле, вы должны использовать оператор присваивания, который запускается после принятия записи.Код может выглядеть так:
Case of
: (Событие формы = при загрузке)
СПИСОК ДЛЯ ARRAY («Города»; aCities)
Если (Номер записи ([Люди]) <0)
Города: = 3
Остальное
aCities: = Найти в массиве (aCities; City)
Конец, если
: (Событие формы = При нажатии)
Город: = aCities {aCities}
: (Событие формы = При проверке)
Город: = aCities {aCities}
: (Событие формы = при выгрузке)
ЯСНАЯ ПЕРЕМЕННАЯ (города)
Конечный случай
В разделе «События» окна «Список свойств» необходимо выбрать каждое событие, которое вы проверяете, в своем операторе Case.
Массивы всегда содержат конечное количество элементов. Список элементов динамический и может быть изменен методом. Элементы в массиве можно изменять, сортировать и добавлять в них.
Для получения информации о создании и использовании массива см. Главу «Массивы» в руководстве Справочник по языку 4D .
Если вы хотите использовать всплывающее меню / раскрывающийся список для управления значениями указанного поля или переменной, 4D позволяет вам напрямую ссылаться на поле или переменную как на источник данных объекта.Это упрощает управление перечисленными полями / переменными.
Примечание: Если вы используете иерархический список, отображается только первый уровень, и его можно выбрать.
Например, в случае поля «Цвет», которое может содержать только значения «Белый», «Синий», «Зеленый» или «Красный», теперь можно создать список, содержащий эти значения, и связать его с объектом всплывающего меню, который ссылается на поле 4D «Цвет». Затем 4D автоматически берет на себя управление вводом и отображением текущего значения в форме.
Чтобы связать всплывающее меню / раскрывающийся список или поле со списком с полем или переменной, вы можете просто ввести имя поля или переменной непосредственно в область Имя переменной объекта:
Когда форма выполняется, 4D автоматически управляет всплывающим меню или полем со списком во время ввода или отображения: когда пользователь выбирает значение, оно сохраняется в поле; это значение поля отображается во всплывающем меню при отображении формы:
Примечание: Невозможно объединить этот принцип с использованием массива для инициализации объекта.Если вы вводите имя поля в области Имя переменной , вы должны использовать список выбора.
Когда вы связали всплывающее меню / раскрывающийся список со списком выбора и с полем, вы можете использовать опцию Сохранить как значение / ссылку , доступную в теме «Источник данных» в Списке свойств.
Этот параметр позволяет оптимизировать размер сохраняемых данных. Дополнительные сведения см. В разделе «Сохранить как значение или ссылку».
Вы можете назначить стандартное действие Перейти к странице всплывающему меню / раскрывающемуся списку (тема «Действие» в Списке свойств).Когда выбрано это действие, 4D автоматически отобразит страницу формы, которая соответствует номеру объекта, который выбран в раскрывающемся списке.
Например, если пользователь выбирает третий элемент списка, 4D отобразит третью страницу текущей формы (если она существует).
Если вы хотите управлять эффектом выбора элемента самостоятельно, выберите Без действий .
Всплывающее окно — демонстрации jQuery Mobile
Всплывающий виджет может использоваться для различных типов всплывающих окон.От небольшой всплывающей подсказки до большого лайтбокса с фотографиями.
Основы всплывающих окон
Чтобы создать всплывающее окно, добавьте атрибут data-role = "popup"
в div с содержимым всплывающего окна. Затем создайте ссылку с href
, установленным на id
всплывающего div, и добавьте атрибут data-rel = "popup"
, чтобы указать инфраструктуре открывать всплывающее окно при нажатии на ссылку. Всплывающий div должен быть вложен внутри той же страницы, что и ссылка.
Подсказка
Всплывающую подсказку можно создать, добавив образец темы в базовое всплывающее окно и добавив отступ через класс ui-content
.Здесь мы также покажем, как можно настроить стиль кнопки всплывающей подсказки.
Фото-лайтбокс
Лайтбокс для отображения изображений можно легко создать, поместив изображение во всплывающее окно. В этом примере кнопка закрытия добавляется к разметке путем добавления ссылки. Атрибут data-overlay-theme = "b"
добавляет темный фон позади фотографий. Информацию о продвинутых техниках фотосъемки см. В разделе «Масштабирование изображений во всплывающих окнах».
Меню
Меню можно создать, добавив список во всплывающем окне.
Вложенное меню
Вложенное меню можно создать, поместив список в сворачиваемый внутри всплывающего окна.
Форма
Вы можете разместить форму внутри всплывающего окна. Когда он откроется, фокус будет ограничен элементами внутри всплывающего окна.
Диалог
Стандартная разметка диалогового окна может быть помещена во всплывающее окно. Чтобы создать диалоговое окно в модальном стиле, добавьте во всплывающее окно атрибут data-dishibited = "false"
, чтобы предотвратить поведение «щелчок снаружи-закрытие», чтобы людям нужно было взаимодействовать с всплывающими кнопками, чтобы закрыть его.
Добавление отступов
Для всплывающих окон с форматированным текстом необходимо заполнение. Класс ui-content
можно добавить во всплывающее окно, чтобы добавить стандартные 15 пикселей заполнения. При добавлении отступов мы применяем несколько правил стиля, чтобы отменить верхнее поле для первого заголовка или абзаца во всплывающем окне и сделать то же самое для нижнего поля последнего элемента.
Закрытие попапов
По умолчанию всплывающие окна можно закрыть либо щелчком за пределами всплывающего виджета, либо нажатием клавиши Esc
.Чтобы предотвратить это, во всплывающее окно можно добавить атрибут data-dishibited = "false"
. Чтобы добавить явную кнопку закрытия во всплывающее окно, добавьте ссылку с ролью кнопки во всплывающий контейнер с атрибутом data-rel = "back"
и позицией через класс.
Позиция
По умолчанию всплывающие окна открываются по центру по вертикали и горизонтали над элементом, который вы щелкнули (исходная точка), что хорошо для всплывающих окон, используемых в качестве всплывающих подсказок или меню. Если всплывающее окно должно отображаться по центру окна, а не над исходной точкой, добавьте атрибут data-position-to
к ссылке и укажите значение window
.Также можно указать любой допустимый селектор в качестве значения от позиции до
в дополнение к origin
и window
.
переходов
По умолчанию у всплывающих окон нет перехода, чтобы они открывались как можно быстрее. Чтобы установить переход, используемый для всплывающего окна, добавьте атрибут data-transition
к ссылке, которая ссылается на всплывающее окно. Обратный переход будет использован при закрытии всплывающего окна. По соображениям производительности на мобильных устройствах мы рекомендуем использовать более простые переходы, такие как всплывающее, затухание или нет, для плавной и быстрой всплывающей анимации.
Тема
Всплывающее окно имеет две опции, связанные с темой: data-theme
и data-overlay-theme
. Параметр data-theme
относится к теме самого всплывающего окна, тогда как data-overlay-theme
управляет полупрозрачным слоем за всплывающим окном. Тема унаследована от страницы; укажите data-theme = "none"
для всплывающего окна с прозрачным фоном.
Стрелка
Всплывающее окно может отображать стрелку вдоль одного из краев при открытии, если установлен атрибут data-arrow
. Атрибут может принимать значение true
, false
или строку, содержащую список сокращений краев, разделенных запятыми («l» для левого, «t» для верхнего, «r» для правого и «b». для дна). Например, если вы установите data-arrow = "r, b"
, то стрелка всегда будет появляться только вдоль нижнего или правого края всплывающего окна. true
совпадает с "l, t, r, b"
и false
или ""
указывает, что всплывающее окно должно отображаться без стрелки.
Щелкните розовую область ниже, чтобы отобразить всплывающее окно со стрелкой.
Предварительно обработанная разметка
Вы можете предоставить предварительно отрисованную всплывающую разметку, чтобы сэкономить время запуска. Страница в приведенном ниже примере содержит всплывающее окно с предварительно обработанной разметкой, поставляемой как часть исходной разметки страницы.
Как создать [для начинающих]
Хотите узнать, как настроить раскрывающееся меню WordPress?
В этой статье мы шаг за шагом проведем вас через создание раскрывающегося меню со скриншотами!Вы можете делать все с помощью основных функций WordPress — нет необходимости в сторонних плагинах. Давайте погрузимся в…
Как создать раскрывающееся меню WordPress с основными функциями
Вашим первым шагом должно быть подтверждение того, что ваша тема поддерживает раскрывающиеся меню. К сожалению, не все темы поддерживают раскрывающееся меню. Например, тема Hestia включает встроенные функции для создания как раскрывающихся, так и мегаменю.
Если вы не уверены, проверьте документацию по вашей теме, чтобы узнать, поддерживаются ли раскрывающиеся меню.
Если да, то вы можете воспользоваться самым популярным способом создания раскрывающегося меню WordPress (и одним из самых простых).
Еще лучше? Если вы решите создать раскрывающееся меню в WordPress с помощью параметра меню по умолчанию, вам не нужно беспокоиться об исчезновении меню при переключении темы или добавлении новых плагинов!
Для начала зайдите в панель управления WordPress и нажмите Внешний вид> Меню.
Если вы видите подсказку о создании меню, вам нужно, как говорится в подсказке, создать меню, чтобы начать работу. Я покажу вам это на шаге 1.Однако, если у вас уже есть меню с некоторыми ссылками, вы можете сразу перейти к шагу 2.
Если у вас еще нет меню, введите имя в поле Имя меню , а затем нажмите кнопку Создать меню . Настоящее название не имеет значения — просто запомните:
.Шаг 2. Добавьте ссылки в меню
После того, как вы создали меню, самое время добавить ссылки.
Чтобы добавить ссылки на свой контент, используйте боковую панель, чтобы отметить, какие страницы или сообщения вы хотите отображать в своем меню.После того, как вы выбрали контент, который хотите добавить, нажмите кнопку Добавить в меню .
Вы также можете проявить больше творчества и включить пользовательские ссылки в раскрывающиеся меню. Чтобы узнать о них больше, прочтите этот пост.
Теперь у вас должен быть список всех пунктов меню. Чтобы создать раскрывающееся меню, вы можете использовать перетаскивание, чтобы переместить элементы, которые вы хотите отобразить в раскрывающемся списке. «Родительский» пункт появится в главном меню. И пункты меню под родительским элементом появятся в раскрывающемся списке, когда пользователь наведет указатель мыши на родительский элемент:
Когда вы будете довольны организацией, нажмите Меню сохранения .
Как только это будет сделано, вам нужно будет решить, где вы хотите, чтобы ваше меню отображалось на вашем веб-сайте. Заголовок обычно является лучшим выбором (никто не хочет прокручивать страницу вниз только для того, чтобы найти страницу «Контакты» или «О нас»!).
Вы можете выбрать, где отображать его, в области Настройки меню :
Здесь следует отметить два момента:
- Вы можете увидеть разные Расположение экрана , потому что фактические имена различаются для каждой темы.Обычно вам нужно выбрать что-то вроде «Главное меню», «Основное меню», «Основное» и т. Д., Если вы хотите, чтобы ваше меню отображалось в заголовке.
- Если вы установите флажок Автоматически добавлять новые страницы верхнего уровня в это меню , он добавит любые новые страницы, которые вы создаете в меню. Это может быстро запутаться, и это не рекомендуется!
После сохранения изменений готово!
Более наглядный способ управления раскрывающимися меню
В качестве альтернативы описанному выше методу вы также можете управлять своими меню с помощью «предварительного просмотра в реальном времени».
Нажав на эту кнопку, вы попадете в настройщик WordPress.
Хотя интерфейс выглядит немного иначе, применяются все те же принципы. Вы по-прежнему сможете:
- Перетаскивайте элементы меню для создания раскрывающихся списков
- Изменить расположение меню
- и т. Д.
А преимущество в том, что вы сможете увидеть предварительный просмотр выпадающего меню WordPress в реальном времени.
3 быстрых совета по использованию раскрывающихся меню
Теперь, когда вы знаете, как правильно настроить раскрывающееся меню WordPress, мы хотели бы дать вам 3 простых совета, о которых следует помнить:
- Используя вариант раскрывающегося меню WordPress по умолчанию, вы можете указать, где вы размещаете свои подменю. Например, если ваше меню называется «Еда» и вы хотите, чтобы «Завтрак» отображался перед «Ужином», просто перетащите завтрак наверх!
- При создании меню дайте им подходящие названия! Например, если у вас есть меню под названием «О программе», вам не нужно, чтобы в раскрывающемся меню были «Контакты» и «Часто задаваемые вопросы». В связи с этим мы предлагаем использовать «Контакты», «Часто задаваемые вопросы» и «О нас» как отдельные пункты меню.
- Как правило, не следует класть все яйца в одну корзину.В этом случае не создавайте одно меню и не добавляйте в него все свои подменю.
Если вы помните эти 3 совета при создании раскрывающихся меню WordPress, все будет хорошо!
Заключительные мысли
Если вы будете следовать предоставленным нами пошаговым инструкциям, вы легко сможете создавать раскрывающиеся меню WordPress всего за пару минут.
WordPress позволяет настраивать практически все на вашем веб-сайте, поэтому нет причин, по которым вам не следует создавать удобные подменю. Тем более, что они помогают вашим клиентам перемещаться по вашему сайту.
У вас есть еще вопросы о том, как создать раскрывающееся меню WordPress? Оставьте комментарий, и мы постараемся помочь!
Бесплатный гид
5 основных советов по ускорению
Ваш сайт на WordPress
Сократите время загрузки даже на 50-80%
, просто следуя простым советам.
Создание всплывающего меню, работающего в каждой версии Excel
Создание всплывающего меню, работающего в каждая версия Excel
Сделать меню, работающее во всех версиях Excel, не так-то просто
больше, потому что в Excel 2007 и более поздних версиях Microsoft заменила меню рабочего листа
Бар с лентой.Одна вещь, которая работает почти в каждой версии Excel
состоит в том, чтобы добавить пункты меню в контекстное меню с кодом VBA, для получения дополнительной информации
посетите:
Настройка контекстных меню с помощью VBA в каждом
Версия Excel
Другой способ, который будет работать в любой версии Excel состоит в том, чтобы создать всплывающее меню, как я показываю вам на этой странице.
Примечание : в 2013 и 2016 годах может быть проблема с какой-то код (например, листы выбора), после запуска макроса вы не можете дольше закройте книгу, подойдя к верхнему правому углу и нажав «Х».Кроме того, вы не можете прокручивать лист вниз с помощью колесика на мышью (хотя вы можете перетащить полосу прокрутки вниз с правой стороны сторону.) Исправление состоит в том, чтобы добавить код проблемы в другой макрос и вызвать макрос, подобный этому Application.OnTime Now, «MacroName»
Узнайте, как создать PopMenu, работающее в каждой версии Excel.
Примечание : Вы также можете найти эту информацию в моей статье MSDN: http://msdn.microsoft.com/en-us/library/gg987030.aspx
Обзор всплывающих меню в Excel
Создание всплывающего меню почти
так же, как создание контекстного меню. Главное отличие в том, что контекстные меню
видны только при щелчке правой кнопкой мыши, например, по ячейке / диапазону или
конкретный объект и всплывающие меню отображаются тогда, когда вы этого хотите. Чтобы отобразить
Всплывающее меню, которое вы создали с помощью кода VBA, вы должны использовать строку кода, например
это, чтобы позволить ему всплывающее окно Application.CommandBars (Popup
имя) .ShowPopup
Давайте начнем
1: Откройте новую книгу
2: Сохраните файл с красивым именем,
сохранить как xls или xlsm (книга с поддержкой макросов в Excel 2007-2013)
3: Нажмите Alt-F11, чтобы открыть редактор VBA
4: Используйте
Вставьте> Модуль в строке меню, чтобы создать модуль для хранения кода
5: вставьте приведенный ниже код в модуль (обратите внимание, что это возможно
что Option Explicit уже есть в модуле)
Option Explicit Public Const Mname As String = "MyPopUpMenu" Sub DeletePopUpMenu () 'Удалить всплывающее меню, если оно существует При ошибке Возобновить Далее Заявление.CommandBars (Mname). Удалить При ошибке GoTo 0 Конец подписки Подложка CreateDisplayPopUpMenu () 'Удалить всплывающее меню, если оно существует Вызов DeletePopUpMenu 'Создать PopUpmenu Вызов Custom_PopUpMenu_1 'Показать всплывающее меню При ошибке Возобновить Далее Application. CommandBars (Mname) .ShowPopup При ошибке GoTo 0 Конец подписки Sub Custom_PopUpMenu_1 () Dim MenuItem как CommandBarPopup 'Добавить всплывающее меню С Application.CommandBars.Add (Name: = Mname, Position: = msoBarPopup, _ MenuBar: = False, Temporary: = True) 'Сначала добавьте две кнопки С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 1" .FaceId = 71 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 2" .FaceId = 72 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с 'Второе меню добавления с двумя кнопками Установите MenuItem = .Controls.Add (Type: = msoControlPopup) С MenuItem .Caption = "Мое специальное меню" С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 1 в меню" . FaceId = 71 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 2 в меню" .FaceId = 72 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с Конец с 'Третья добавить одну кнопку С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 3" .FaceId = 73 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с Конец с Конец подписки Sub TestMacro () MsgBox "Привет, привет из Нидерландов" Концевой переводник
6: Alt q, чтобы закрыть редактор VBA
7: Сохраните файл
Теперь у нас есть код в файле, который создает всплывающее меню.
с несколькими кнопками и меню с двумя кнопками
, но как мы отображаем
это всплывающее меню, когда мы этого хотим?
Примечание : для тестирования
каждая опция кнопки вызывает один и тот же макрос.
1: Alt F8, чтобы открыть диалоговое окно макроса
2: Выберите макрос CreateDisplayPopUpMenu
3: В диалоговом окне нажмите кнопку «Параметры».
4: Вставьте
письмо м например и нажмите ОК
5: Закрыть
этот диалог и попробуйте ярлык Ctrl m
6: Если все правильно, вы увидите меню
7: Сохраните файл
Примечание : Если другая книга, открытая после того, как эта книга использует ту же ярлык будет использоваться этот ярлык книги, последняя книга, которую вы open выиграет игру.Этот ярлык также будет работать, если другая книга активный.
Теперь, когда мы закрываем книгу, мы не удаляем меню. Этот
не имеет большого значения, потому что мы создаем меню
с последним аргументом
Временное значение True, чтобы оно автоматически удалялось при закрытии Excel.
, но рекомендуется удалить его в событии Workbook_Deactivate для
рабочая тетрадь.
1 : Alt F11, чтобы открыть редактор VBA
2: Перейдите в модуль ThisWorkbook
3: Вставьте код ниже в этот модуль
Частная вспомогательная книга_Deactivate () Вызов DeletePopUpMenu Концевой переводник
4: Alt q, чтобы закрыть редактор VBA
5: Сохраняем файл
Создайте кнопку в контекстном меню ячейки для вызова всплывающего меню
Примечание : Меню ячейки — это контекстное меню, которое вы видите при щелчке правой кнопкой мыши по ячейке или выделенному фрагменту. Прежде чем мы попробуем этот пример, мы сохраните файл с другим именем, поэтому оставим первый пример нетронутым.
1: Alt F11, чтобы открыть редактор VBA
2: Зайдите в модуль с кодом
3: Вставьте код ниже
в модуле ниже другой код
Sub AddToCellMenu () Dim ContextMenu как CommandBar 'Сначала удалите элемент управления, чтобы избежать дублирования Вызов DeleteFromCellMenu 'Установите ContextMenu в меню ячейки Установить ContextMenu = Application.CommandBars ("Ячейка") 'Добавить одну настраиваемую кнопку в меню ячейки С ContextMenu.Controls.Add (Тип: = msoControlButton, перед: = 1) .OnAction = "'" & ThisWorkbook.Name & "'!" & "CreateDisplayPopUpMenu" .FaceId = 59 .Caption = "Мое всплывающее меню" .Tag = "My_Cell_Control_Tag" Конец с Конец подписки Sub DeleteFromCellMenu () Dim ContextMenu как CommandBar Dim ctrl как CommandBarControl 'Установите ContextMenu в меню ячейки Установить ContextMenu = Application.CommandBars ("Ячейка") 'Удалить пользовательские элементы управления с помощью тега: My_Cell_Control_Tag Для каждого ctrl в ContextMenu.Органы управления Если ctrl.Tag = "My_Cell_Control_Tag" Тогда ctrl.Delete Конец, если Следующий ctrl Концевой переводник
4: Перейти к модулю ThisWorkbook
5: Вставьте приведенный ниже код в этот модуль (замените событие Deactivate в
пример выше и ниже)
Private Sub Workbook_Activate () Вызов AddToCellMenu Конец подписки Частная вспомогательная книга_Deactivate () Вызов DeleteFromCellMenu Вызов DeletePopUpMenu Концевой переводник
6: Alt q для перехода в Excel
7: Сохраните
файл, закройте и снова откройте
Если все правильно, вы можете вызвать PopUp сейчас с помощью
пункт меню в верхней части меню ячейки.
Скриншот ниже взят из
Меню ячеек Excel 2010
ограничить всплывающее меню одним листом в одной книге
Что делать, если вы хотите отображать разные меню для каждого листа или только отобразить меню на нескольких листах?
Откройте книгу из примера выше и добавьте в эту книгу приведенный ниже код.
1: Alt F11, чтобы открыть
Редактор VBA
2: перейдите к модулю с кодом
3: вставьте макрос ниже
в модуле ниже другой код
Sub Custom_PopUpMenu_2 () 'Добавить всплывающее меню с тремя кнопками С приложением.CommandBars.Add (Имя: = Mname, Позиция: = msoBarPopup, _ MenuBar: = False, Temporary: = True) С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 1" .FaceId = 71 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 2" .FaceId = 72 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с С .Controls.Add (Тип: = msoControlButton) .Caption = "Кнопка 3" .FaceId = 73 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" Конец с Конец с Концевой переводник
Затем замените макрос с именем CreateDisplayPopUpMenu на макрос ниже
Подложка CreateDisplayPopUpMenu () 'Удалить всплывающее меню, если оно существует Вызов DeletePopUpMenu 'Создайте правильное меню на основе активного рабочего листа Выберите Case ActiveSheet.Имя Дело "Sheet1": вызовите Custom_PopUpMenu_1 Случай "Sheet2": вызовите Custom_PopUpMenu_2 Случай еще: MsgBox «Извините, нет всплывающего меню» Конец Выбрать 'Показать всплывающее меню При ошибке Возобновить Далее Application.CommandBars (Mname) .ShowPopup При ошибке GoTo 0 Концевой переводник
Когда рабочий лист Sheet1 активен, он открывает всплывающее меню с 3
кнопки и меню с 2 кнопками.
И когда лист Sheet2 активен, он
откроет всплывающее меню с 3 кнопками. Если активен какой-либо другой рабочий лист, нет
Появится всплывающее меню.Таким образом, у вас будет полный контроль над тем, что вы
параметры меню пользователя находятся на каждом листе.
Добавить кнопку для вызова всплывающего меню в QAT в Excel 2007-2013
В приведенном выше примере мы добавили кнопку для вызова меню в ячейке
контекстное меню, но если вы используете
Excel 2007-2013, также можно добавить
кнопку QAT.
Откройте книгу из первого примера и убедитесь, что вы сохранили его как xlsm (файл с поддержкой макросов)
Щелкните правой кнопкой мыши QAT и выберите «Настроить панель быстрого доступа» в «Выбрать команды из» в раскрывающемся списке выберите «Макросы» и в раскрывающемся меню «Настроить панель быстрого доступа» выберите «Для YourWorkbookName.xlsm «
Выберите CreateDisplayPopUpMenu макрос и нажмите Добавить, а затем ОК. Вы можете использовать Изменить, чтобы изменить значок, если хочешь, я использую зеленую кнопку, как ты видишь. Затем нажмите ОК и сохраните файл.
Примечание : это нужно сделать только один раз
потому что кнопка сохраняется вместе с книгой.
Если вы отправите файл по адресу
другие пользователи могут использовать вашу кнопку в QAT.
Если сделаете правильно это выглядит так
Примечание : еще один очень простой пример всплывающего меню для Excel
2007-2013 посетите страницу ниже:
Меню избранных макросов в быстром доступе
Панель инструментов в Excel 2007-2013
изображений кнопок, как найти FaceId
Вы видите, что я использую FaceId 71 для изображения с номером 1 и FaceId 59
для смайлика в примерах —
, но как узнать, какие номера FaceId я
можно использовать?
Наконечник : Вы можете скачать showfaceids.xls с моего сайта, чтобы найти все номера FaceID.
Всплывающих меню
Всплывающие меню
Как использовать панель поведения Dreamweaver для создания всплывающих меню
В этом руководстве вы узнаете, как использовать панель поведения Dreamweaver для создания небольших всплывающих меню. Такое поведение помогает создавать раскрывающиеся меню, раскрывающиеся меню. пр.
Необходимые знания
В этом руководстве вы узнаете, как создавать всплывающие меню с помощью поведения Dreamweaver, и, таким образом, предполагается, что вы знакомы с некоторыми программами для дизайна, даже если вы новичок в Adobe Dreamweaver.Однако будьте уверены, что нашим подробным инструкциям может следовать даже новичок.
Вы здесь ::: Главная >> Бесплатные учебные материалы >> Учебные пособия по Dreamweaver >> Всплывающие менюAdobe Dreamweaver имеет генератор всплывающих окон, который автоматически генерирует код CSS и код JavaScript. Например, вы можете использовать всплывающее меню для организации нескольких параметров навигации, связанных с кнопкой. Вы можете создать сколько угодно уровней подменю во всплывающем меню.Каждый элемент всплывающего меню отображается в виде ячейки HTML или изображения, которая имеет состояние «Вверху», состояние «Наведение» и текст в обоих состояниях.
Примечание: Всплывающее меню — это не то же самое, что графическое всплывающее меню.
Как создавать и редактировать всплывающие меню
Всплывающие меню можно легко создать с помощью «Показать всплывающее меню» на панели поведения Dreamweaver (аналогично всплывающему меню Fireworks). Параметры можно установить с помощью диалогового окна для создания горизонтального или вертикального всплывающего меню.Вы можете использовать это диалоговое окно для установки или изменения цвета, текста и положения всплывающего меню.
Например, : См. Наши популярные ссылки — услуги, портфолио, цены и предложения, веб-продукты, бесплатные ресурсы и о нас
- Чтобы создать всплывающее меню для ссылки (текст или изображение), создайте ссылку, выберите ее и откройте панель «Поведение» (Shift + F3).
- Нажмите кнопку «Добавить» (+) и выберите «Показать всплывающее меню» во всплывающем меню «Действия».
- Задайте параметры для всплывающего меню с помощью диалогового окна, которое появляется с использованием следующих вкладок:
- Содержание — для установки имени, структуры, URL-адреса и цели отдельных пунктов меню.
- Внешний вид — для настройки внешнего вида состояния меню (вверх / вниз) и для выбора шрифта для текста пункта меню.
- Advanced — для установки свойств ячеек меню, например ширины, высоты, цвета, ширины границы, отступа текста и длительности задержки до появления меню после того, как пользователь наводит указатель на триггер.
- Позиция — для установки позиции меню относительно инициирующего изображения или ссылки.
- Чтобы отредактировать всплывающее меню, сначала выберите ссылку, а затем дважды щелкните всплывающее меню в столбце «Действия» на панели «Поведение».
- Сохраните и проверьте файл в веб-браузере. Вот и все, что вы узнали, как создавать всплывающие меню с помощью Dreamweaver Behaviors.
Требуется программное обеспечение
Adobe Dreamwever (Macromedia Dreamweaver до версии 8).Пожалуйста, проверьте совместимые версии, перечисленные в поле ниже. Поскольку в этой серии руководств рассматриваются основные функции Dreamweaver для создания всплывающих меню с использованием поведения Dreamweaver, в большинстве случаев подойдет любая версия этого программного обеспечения.
Версии Dreamweaver, совместимые с этим учебным курсом
Dreamweaver 4-8 | Dreamweaver CS3 | Dreamweaver CS4 / CS5 / CS6Примечание : Инструкции в этом руководстве одинаковы для всех версий Dreamweaver, перечисленных выше; Снимки экрана (если есть) могут отличаться. Рекомендуемая версия: Dreamweaver CS6