html — Не работает выпадающее меню через CSS (hover)
Задать вопрос
Вопрос задан
Изменён 2 года 2 месяца назад
Просмотрен 384 раза
Я только начала учиться, уже возникают небольшие проблемки:( Уже все перепробовала и перепроверила, не появляется выпадающее меню при наведении. Делала по уроку.
.root { list-style-type: none; display: inline-block; position: relative; padding: 10px 15px; background-color: #ccc; cursor: pointer; } .root:hover { position: relative; display: inline-block; background-color: aqua; } .root:hover .dropdown { display: block; // Вот тут не работает background-color: #ccc; } . dropdown { display: none; position: absolute; top: 54px; left: 48px; box-sizing: border-box; background-color: aquamarine; padding: 10px; width: 100%; } .dropdown>li { cursor: pointer; list-style: none; } .dropdown>li:hover { color: aqua; }
<body> <ul> <li>Меню</li> <ul> <li>1-й элемент</li> <li>2-й элемент</li> </ul> <li>Меню 2</li> <ul> <li>3-й элемент</li> <li>4-й элемент</li> </ul> </ul> </body>
- html
- css
- меню
- hover
2
Нужно было вложить .dropdown
в .root
.root { list-style-type: none; display: inline-block; position: relative; padding: 10px 15px; background-color: #ccc; cursor: pointer; } .root:hover { position: relative; display: inline-block; background-color: aqua; } . root:hover .dropdown { display: block; background-color: #ccc; } .dropdown { display: none; position: absolute; top: 54px; left: 48px; box-sizing: border-box; background-color: aquamarine; padding: 10px; width: 100%; } .dropdown>li { cursor: pointer; list-style: none; } .dropdown>li:hover { color: aqua; }
<body> <ul> <li>Меню <ul> // .dropdown находится внутри .root <li>1-й элемент</li> <li>2-й элемент</li> </ul> </li> <li>Меню 2 <ul> <li>3-й элемент</li> <li>4-й элемент</li> </ul> </li> </ul> </body>
2
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Css выпадающий список — Stack Overflow на русском
Вопрос задан
Изменён 7 лет 8 месяцев назад
Просмотрен 4k раз
надо с помощью только css сделать выпадающий список каждый пункт меню в себе имеет еще несколько (первый например 2 , а второй 3) как сделать так , чтобы высота пункта при наведении увеличивалась в 2 или в 3 раза в зависимости от пункта. Только средствами css это возможно??
3
Если я правильно понял Вас, то это поможет:
HTML
<ul> <li><a href="#">Home</a></li> <li><a href="#">Frontend Development</a> <ul> <li><a href="#">HTML</a></li> <li><a href="#">CSS</a> <ul> <li><a href="#">Resets</a></li> <li><a href="#">Grids</a></li> <li><a href="#">Frameworks</a></li> </ul> </li> <li><a href="#">JavaScript</a> <ul> <li><a href="#">Ajax</a></li> <li><a href="#">jQuery</a></li> </ul> </li> </ul> </li> <li><a href="#">Backend Dev</a> <ul> <li><a href="#">Ruby</a> <ul> <li><a href="#">Ruby on Rails</a></li> <li><a href="#">Sinatra</a></li> </ul> </li> <li><a href="#">PHP</a> <ul> <li><a href="#">WordPress</a></li> <li><a href="#">Symfony</a></li> </ul> </li> </ul> </li> <li><p>From Russia with <span</span></p></li> </ul>
SCSS
ul { list-style: none; padding: 0; margin: 0; background: #1bc2a2; li { display: block; position: relative; float: left; background: #1bc2a2; ul { display: none; li { border-top: 0; } } a { display: block; padding: 1em; text-decoration: none; white-space: nowrap; color: white; &:hover { background: #2c3e50; } } p { color: white; padding-left: 1em; & span { color: red; } } } } li:hover { > ul { display: block; position: absolute; } li { float: none; & a:hover { background: #2c3e50; } } a { background: #1bc2a2; } } ul ul ul { left: 100%; top: 0; } // Clearfix ul { &:before, &:after { content: " "; display: table; } &:after { clear: both; } }
Поиграться на CodePen можно здесь.
1
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Самый простой способ создать его для своего сайта!
КСС
04 января 2023 г.
Линас Л.
4 мин Чтение
Выпадающее меню содержит список страниц и подстраниц. Пользователи могут получить доступ к его содержимому, щелкнув или наведя курсор на меню.
Этот элемент дизайна уменьшает беспорядок кнопок, ссылок и текста, что полезно для улучшения пользовательского интерфейса веб-сайта или приложения на небольших экранах.
Продолжайте читать, поскольку мы рассмотрим шаги по созданию выпадающего меню с использованием HTML и CSS. Вы также научитесь применять стили к недавно созданному раскрывающемуся меню, чтобы оно соответствовало брендингу вашего проекта.
Загрузить полную памятку по CSS
Для этого руководства требуется текстовый редактор для создания файла HTML и CSS, содержащего код раскрывающегося меню. Как вариант, вы можете сделать это через Файловый менеджер вашей панели управления хостингом. В следующем руководстве по раскрывающемуся меню будет использоваться последний метод.
Шаг 1.
Создание файла с кодом HTMLДля начала создайте файл HTML для фактического содержания и синтаксиса раскрывающегося меню. Перейдите к диспетчеру файлов с панели управления hPanel и создайте новый файл с именем 9.0019 menu.html
внутри каталога public_html .Файл menu.html будет содержать элементы выпадающего меню — один родительский элемент с пятью пунктами меню. Каждое подменю будет перенаправлять пользователей на разные страницы вашего сайта.
Добавьте в файл menu.html следующий код:
дел>
Классы dropdown, mainmenubtn, и dropdown-child представляют разные элементы HTML. CSS будет использовать их для доступа к определенному элементу и изменения его дизайна.
Вот как будет выглядеть HTML-меню без каких-либо правил CSS:
Совет профессионала
Не забудьте заменить ссылки внутри атрибутов href URL-адресами страниц вашего веб-сайта и переименовать подменю, чтобы отразить фактическое содержание страницы.
Шаг 2. Добавление CSS и создание эффекта раскрывающегося списка
Теперь, когда у вас есть элементы HTML для работы, давайте создадим эффект раскрывающегося списка и правила CSS для каждого из них.
Создайте внутреннюю таблицу стилей в файле menu.html , поместив следующий код в элемент :
.mainmenubtn{цвет фона:небесно-голубой;белый цвет;граница:нет;курсор:указатель;отступ:20 пикселей;верхняя граница:20px}.mainmenubtn:наведите{цвет фона:синий}.падать{положение:родственник;отображение:встроенный блок}.dropdown-ребенок{дисплей:нет;цвет фона:небесно-голубой;минимальная ширина:200 пикселей}.dropdown-ребенок{цвет синий;отступ:20 пикселей;текстовое оформление:нет;дисплей:блок}.dropdown:наведите курсор .dropdown-child{дисплей:блок}
Pro Tip
В этом примере стили CSS помещаются в один и тот же файл HTML (внутренняя таблица стилей). Используйте внешний CSS,связав HTML-документ с отдельным файлом CSS для упрощения модификации.
Имя класса .mainmenubtn содержит свойства CSS кнопки раскрывающегося списка. Он устанавливает цвет фона и шрифта кнопки и опускает границу. Свойство cursor определяет,что курсор мыши изменится на руку с вытянутым символом указательного пальца при наведении курсора на кнопку раскрывающегося списка.
Добавление селектора hover в класс .mainmenubtn определяет,как будет выглядеть раскрывающееся меню,когда пользователь наводит на него курсор.
Класс .dropdown устанавливает положение раскрывающегося меню. В приведенном выше примере правила CSS располагают элементы меню под родительским меню. Свойство inline-block заставляет их отображаться без разрыва строки,разделяющего их.
Класс .dropdown-child относится к фактическому содержимому выпадающего меню. Использование отображение значение нет делает подменю невидимыми. .dropdown:hover .dropdown-child превращает весь элемент в всплывающее меню.
Pro Tip
Не стесняйтесь экспериментировать с другими свойствами CSS,чтобы получить желаемый дизайн. Вы даже можете добавить JavaScript,чтобы создать адаптивное выпадающее меню с динамической анимацией.
Когда вы закончите,сохраните и загрузите файл. Вот как будет выглядеть выпадающее меню,когда вы откроете его в веб-браузере:
Доступно множество современных шаблонов раскрывающихся меню CSS,поэтому вам не нужно писать код с нуля. По крайней мере,они являются отличным источником вдохновения.
Следующий шаблон выпадающего меню от kkrueger использует HTML и CSS. Каждое родительское меню плавно расширяется при наведении,создавая динамичный и запоминающийся вид веб-страницы.
Другой пример взят из Бхакти Пасарибу. Он использует JavaScript для создания интерактивного выпадающего меню. Параметры отображаются с анимацией перелистывания при нажатии на родительское меню. Другая анимация заменяет родительское меню выбранным параметром,создавая плавный эффект перехода. Этот шаблон выпадающего меню отличается простотой и динамичностью.
Любителям минимализма может понравиться то,что может предложить Крис Ота. Его складное меню тонкое и не занимает слишком много места.Тем не менее,он ставит во главу угла пользовательский опыт. Вы можете легко заменить описания элементов списка значками,что еще больше усилит брендинг вашего сайта.
Если вы ищете более яркое меню с визуальными эффектами,мы рекомендуем проверить выпадающее меню Molten от Zealand. Он использует анимацию ключевых кадров CSS,чтобы создать привлекательное мерцающее пламя вокруг панели навигации.
Recursive Hover Nav от sean_codes предлагает мегаменю,не мешающее работе сайта. Многоуровневое выпадающее меню построено с использованием HTML,CSS и JavaScript.
При наведении указателя мыши на родительское меню появляются подменю с анимацией смены слайдов. Хотя в нем нет ярких эффектов,как в других примерах,этот шаблон более практичен,когда дело доходит до управления меню с большим количеством контента.
Pro Tip
При разработке выпадающего меню обязательно учитывайте удобство сайта для пользователей. Красиво оформленное выпадающее меню с помощью CSS не гарантирует удобство использования.В большинстве случаев меньше значит больше.
Выпадающее меню упрощает разработку эффективного пользовательского интерфейса. Это уменьшает количество элементов,загромождающих вашу веб-страницу,и при соответствующем дизайне улучшает эстетику сайта.
Вы можете создать выпадающее меню с нуля,используя HTML,CSS и JavaScript. В качестве альтернативы используйте один из множества шаблонов раскрывающегося меню,написанных профессиональными дизайнерами,и настройте его по своему усмотрению.
Мы надеемся,что эта статья помогла вам лучше понять,как создать раскрывающееся меню CSS. Удачи.
Линас начинал как агент по работе с клиентами,а сейчас является полнофункциональным веб-разработчиком и руководителем технической группы в Hostinger. Он увлечен тем,что предлагает людям первоклассные технические решения,но,несмотря на то,что ему нравится программировать,он втайне мечтает стать рок-звездой.
Еще от Линаса Л.
Создание примера выпадающего меню с помощью CSS :focus-within
В сегодняшнем примере будет построено выпадающее меню на чистом CSS с использованием псевдокласса :focus-within
.
Вы можете увидеть в видео ниже рабочий пример:
Как работает псевдоселектор CSS :focus-within
:focus-within выбирает элемент,если этот элемент содержит дочерние элементы,находящиеся в фокусе.
Он связан с псевдоклассом :focus
,просто он сработает,если будет выбрано что-то,что содержится в этом элементе.
В отличие от :focus
,который применяется непосредственно к самому элементу :focus-inin
правила применяются к родительскому элементу в фокусе.
Создание выпадающего меню CSS с помощью :focus-within
Чтобы создать меню,мы начнем с базовой структуры HTML,подобной приведенной ниже:
дел>
Добавим немного CSS,чтобы сделать меню первоначальным:
.menu-container{дисплей:встроенный гибкий;flex-направление:строка;граница:сплошная 2px #000;курсор:указатель}.меню{положение:родственник;прокладка:0rem .5rem}.меню>.меню-контент{дисплей:нет}
На данный момент у нас будет показано только меню,но без рабочего выпадающего списка:
Причина,по которой нам нужно использовать tabindex="0"
,заключается в том,что меню можно будет выбрать,когда пользователь перемещается. с клавиатурой.
Чтобы добавить раскрывающийся список,добавятся дополнительные правила,основанные на псевдоклассе :focus-within
:
.menu>.menu-content{дисплей:нет;положение:абсолютное;граница:сплошная 2px #000}.menu:focus-within>.menu-content{дисплей:гибкий;flex-направление:столбец}.меню{набивка:0,5 бэр;отображение:встроенный блок;цвет:#000}
На этом этапе,если мы нажмем на меню,мы увидим,что раскрывающийся список работает.