Как сделать выпадающее меню в html css: Как создать выпадающее меню

Выпадающее меню с поиском на CSS3 и HTML

Никита Киселев

В этой статье я покажу как с помощью CSS3 и HTML5 создать красивое выпадающее меню с полем поиска.

Подготовка

Разработка меню будет вестись в песочнице codepen. В качестве CSS препроцессора используется SCSS. Так же, активированы автоматические преффиксы autoprefixer, что позволяет сосредоточиться только на разработке и не отвлекаться на ручное добавление преффиксов к свойствам, которые ещё не добавлены в спецификацию браузеров.

Для иконок будем использовать FontAwesome.

На этом подготовка завершена. Начнём с продумывания HTML кода.

HTML

Навигационное меню будет представлять собой несортированный список с классом .navigation, в котором будут различные типы элементов:

  • Обычная ссылка
  • Форма поиска
  • Выпадающее меню
<nav>
  <ul>
    <li>
        <a href="#">
           <i></i>
        </a>
    </li>
    <li><a href="#">Приложение</a></li>
    <li><a href="#">Статистика</a></li>
    <li>
        <form>
            <input type="search" placeholder="Введите фразу для поиска. .." />
            <button>
                <i></i>
            </button>
        </form>
    </li>
    <li>
        <a href="#">
          Опции <i></i>
        </a>
        <ul>
            <li><a href="#">Настройки</a></li>
            <li><a href="#">Приложение</a></li>
            <li><a href="#">Статистика</a></li>
            <li><a href="#">Заказы</a></li>
        </ul>
    </li>
  </ul>
</nav>

CSS стили

Пройдёмся по основным моментам в верстке. Весь код вы можете посмотреть в codepen: https://codepen.io/nikitakiselev/pen/JKWvPR.

Flexbox

Для того чтобы все элементы списка .navigation отображались в строку используем новое CSS свойство display: flex:

.navigation {
  display: flex;
}

Теперь, все дочерние элементы li будут выводиться в строку.

Выпадающее меню

Меню сделано только средствами CSS3. У этого способа есть свои недостатки, но из-за своей простоты используем именно его.

В CSS3 есть замечательное свойство transition, которе позволяет сделать изменение некоторых CSS свойств у элемента плавным.

По умолчанию меню должно быть скрыто. Это можно сделать с помощью display: none, но transition не анимирует это свойство, т.к. у него нет числового значения начального и конечного состояния. На помощь приходит свойство opacity: 0, которое делает элемент полностью прозрачным.

.subnav {
        opacity: 0;
        transition: opacity .3s;
}
li:hover .subnav {
        opacity: 1;
}

Но тут есть одна проблема. Если у элемента нулевая прозрачность, это ещё не значит что его не существует, поэтому все события для него будут работать, например клик мышкой по ссылкам. Чтобы этого избежать есть свойство pointer-events.

.subnav {
        opacity: 0;
        pointer-events: none;
        transition: opacity .
3s; } li:hover .subnav { opacity: 1; pointer-events: all; }

Цвет placeholder

Чтобы изменить цвет placeholder’ов использовалась вот такая конструкция:

::-webkit-input-placeholder {
    color: white;
}
:-moz-placeholder {
    color: white;
}
::-moz-placeholder {
    color: white;
}
:-ms-input-placeholder {
    color: white;
}

Сейчас, для простоты она размещена прямо в главном css файле, но в более серьёзным проектах мы вынесем это в миксины. Mixin — это что-то типа функции в php, только для SASS и LESS.

Демо пример

See the Pen Drop-down menu with search on CSS3 and HTML5 by nikitakiselev (@nikitakiselev) on CodePen.

Теги: CSS HTML

Please enable JavaScript to view the comments powered by Disqus.

Горизонтальное выпадающее меню на CSS

Программирование на Python для начинающих

Бесплатный курс по Python даст Вам всю необходимую базу для начала программирования на языке Python. В курсе Вас ждёт множество уроков (больше 4-х часов видео), исходников и упражнений.

Чтобы получить Видеокурс,
заполните форму

E-mail:
Имя:

Другие курсы

Как создать профессиональный Интернет-магазин

После семинара:

— Вы будете знать, как создать Интернет-магазин.

— Вы получите бесплатный подарок с подробным описанием каждого шага.

— Вы сможете уже приступить к созданию Интернет-магазина.

Записаться

Другие курсы

Ты никогда не решишь проблему, если будешь думать так же, как те, кто ее создал.

Альберт Эйнштейн

Я уже когда-то писал о том, как сделать вертикальное выпадающее меню на CSS. В этой же статье я расскажу о том,

как сделать горизонтальное выпадающее меню на CSS.

Привожу HTML-код:

<ul>
  <li>
    <a href="#">Главная</a>
  </li>
  <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="#">Подменю4</a>
      </li>
      <li>
        <a href="#">Подменю 5</a>
      </li>
      <li>
        <a href="#">Подменю 6</a>
      </li>
      <li>
        <a href="#">Подменю7</a>
      </li>
      <li>
        <a href="#">Подменю 8</a>
      </li>
    </ul>
  </li>
</ul>

И CSS-код:

ul. menu {
  display: inline-block;
  margin: 0;
  padding: 0;
}
ul.menu li {
  float: left;
  list-style: none;
}
ul.menu li a {
  display: block;
  padding: 8px 20px 10px;
  text-decoration: none;
}
ul.menu li ul {
  display: none;
  padding-left: 10px;
}
ul.menu li:hover ul {
  display: block;
  position: absolute;
}
ul.menu li:hover ul li {
  float: none;
}
ul.menu li:hover ul li a {
  padding: 6px 0 8px;
}

Безусловно, здесь дан чуть ли не минимум свойств. Чтобы это всё украсить, нужно менять стили. Что касается

HTML-кода, то он идентичен и для горизонтального, и для вертикального меню.

Теперь у Вас не должно быть проблем с созданием горизонтального выпадающего меню на CSS.

Полный курс по HTML, CSS и по вёрстке сайтов: http://srs.myrusakov.ru/makeup

  • Создано 06.03.2013 04:25:07
  • Михаил Русаков
Предыдущая статьяСледующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov. ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления

: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov. ru»]Как создать свой сайт[/URL]

Выпадающее меню — HTML и CSS — Форумы SitePoint

rimsky1

9 июля 2022 г., 17:38 1

Вечер,

Учусь на работе, сейчас делаю новый сайт для своего семейного бизнеса.

Как сделать так, чтобы это раскрывающееся меню навигации работало на ПК/мобильных устройствах? Я не хочу, чтобы это было слишком причудливо, такой же дизайн, как и у самой основной навигации, я возился, пытаясь заставить его работать как настоящий переключатель, поэтому, когда пользователи нажимают «Сервисы», он переключался вниз, но это не работает должным образом.

В идеале при наведении должны отображаться выпадающие ссылки для настольных компьютеров, а для мобильных устройств для отображения требуется касание.

 
<дел>
  <дел>
    <дел>
       html">
Логотип компании
<ул>
  • Главная
  • Службы <ул>
  • Управляемая служба печати
  • Управление документами
  • Параметры машинного финансирования
  • Ремонт и поддержка машин
  • Продукты <ул>
  • Машины
  • Ricoh
  • Лексмарк
  • Konica Minolta
  • Программное обеспечение
  • Кофакс
  • Вырезка из бумаги
  • Файлстар
  • Свяжитесь с нами
  • <кнопка> <я> Меню
     * {
      box-sizing: граница-коробка;
      маржа: 0;
      заполнение: 0;
    }
    тело {
      цвет фона: #242424;
      семейство шрифтов: 'proxima-nova', без засечек;
      вес шрифта: 100;
      стиль шрифта: обычный;
      размер шрифта: 16 пикселей;
      высота строки: 1,5 бэр;
    }
    ли {
      тип стиля списка: нет;
    }
    а {
      текстовое оформление: нет;
      цвет: наследовать;
    }
    . Панель навигации {
      цвет фона: #ffffff;
      набивка: 2рем 1рем;
      положение: родственник;
      box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px, rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
    }
    .навигационный элемент {
      дисплей: гибкий;
      выравнивание содержимого: пробел между;
      выравнивание элементов: по центру;
    }
    .логотип изображения {
      ширина: 10рем;
      дисплей: блок;
    }
    .navigation-bar-toggle {
      набивка: 1рем;
      цвет фона: #ecf0f1;
      цвет: наследовать;
      курсор: указатель;
      преобразование текста: верхний регистр;
      граница: нет;
      шрифт: наследовать;
      радиус границы: 0,25 бэр;
    }
    .navigation-bar-dropdown {
      дисплей: гибкий;
      flex-направление: столбец;
    }
    .navigation-bar-menu {
      flex-направление: столбец;
      справа: 0;
      переполнение: скрыто;
      верх: 100%;
      фон: #ecf0f1;
      дисплей: нет;
      положение: абсолютное;
      ширина: 100%;
    }
    .navigation-bar-menu .active {
      цвет фона: #242424;
      цвет: #ffffff;
      вес шрифта: 300;
    }
    .navigation-bar-menu li {
      дисплей: гибкий;
      выравнивание содержимого: по центру;
      набивка: 1рем;
    }
    . navigation-bar-menu a {
      преобразование текста: верхний регистр;
    }
    .навигационная панель a:hover {
      непрозрачность: 1 !важно;
    }
    .navigation-bar-menu: не (.active): наведите курсор {
      цвет фона: #242424;
      цвет: #ffffff;
      непрозрачность: 1;
      имя-анимации: fadeInOpacity;
      количество итераций анимации: 1;
      функция синхронизации анимации: легкость;
      продолжительность анимации: 500 мс;
    }
    .navigation-bar-menu.open {
      дисплей: гибкий;
    }
    Только экран @media и (минимальная ширина: 700 пикселей) {
     /* ПАНЕЛЬ НАВИГАЦИИ */
     .navigation-bar-toggle {
       дисплей: нет;
      }
      
      .navigation-bar-menu {
        дисплей: гибкий;
        flex-направление: строка;
        положение: родственник;
        фон: нет;
        оправдать-содержание: конец;
        ширина: авто;
        зазор: 1бэр;
      }
      .navigation-bar-menu li {
        цвет фона: #ecf0f1;
        радиус границы: 0,25 бэр;
        набивка: 1рем;
      }
    }
     
     window.addEventListener('DOMContentLoaded', () => {
      const menuToggler = document.querySelector('.navigation-bar-toggle')
      const menu = document. querySelector('.navigation-bar-menu')
      menuToggler.addEventListener('щелчок', () => {
        menu.classList.toggle('открыть')
      })
    })
     

    ПолОБ 2

    Привет,

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

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

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

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

    Надеюсь, это все равно поможет

    1 Нравится

    rimsky1 3

    Привет, Пол

    Круто, я провел всю прошлую ночь, выясняя все и заставляя это работать, я был очень горд в то время, лол. Однако у меня был чистый :hover, который, я думаю, не идеален, как вы упомянули. Я поиграю с тем, что вы сделали, и проведу некоторые исследования, поскольку это работает так, как я хотел.

    Спасибо за вашу помощь, если вам когда-нибудь понадобится кофе £, дайте мне ссылку.

    1 Нравится

    система Закрыто 4

    Эта тема была автоматически закрыта через 91 день после последнего ответа. Новые ответы больше не допускаются.

    Был ли ist ein Dropdown-Menü und wie erstellt man es?

    Ohne Dropdownmenü würde deine Website verwirrend und chaotisch wirken und potenzielle Kunden abschrecken. Erfahre, wie du ein Dropdownmenü für deine Website erstellen kannst.

    Es gibt viele Elemente, die eine gute Website ausmachen. Sie muss уместно Informationen enthalten, умирают leicht zugänglich sind. Sie muss optisch ansprechend sein. Die Navigation muss einfach sein und sie muss funktionieren.

    Das Erstellen einer Website für dein Unternehmen ist wichtig, aber diese Website muss auch über die richtige Navigation verfügen. Wenn Benutzer Probleme haben, das zu finden, was sie auf deiner Websitesuchen, werden sie wegklicken und woanderssuchen. Eine funktionale Website macht es wahrscheinlicher, Besucher zu gewinnen, und sorgt eher dafür, dass sie länger auf deiner Website bleiben. Damit deine Веб-сайт функциональный ist, muss sie ein Dropdownmenü haben.

    Du fragst dich jetzt, был ли ein Dropdownmenü ist?

    Ein Dropdownmenü ist ein Menu auf einer Website, das eine Liste von Optionen beetet, die ein Benutzer auswählen kann. Ohne Dropdownmenü würde deine Веб-сайт unübersichtlich und erdrückend wirken, был дю для für dein Unternehmen natürlich nicht willst.

    В этом артикуле было создано раскрывающееся меню, которое было раскрыто в раскрывающемся списке HTML- и CSS-раскрывающихся меню, а также было создано раскрывающееся меню HTML-раскрывающегося списка и больше. Lies weiter, um mehr über die Bedeutung der richtigen Website-Navigation zu erfahren, damit du deinen Benutzern ein Positives Erlebnis auf deiner Website bieten kannst, das dafür sorgt, dass sie wiederkommen.

    Было ли это в раскрывающемся меню?

    Ein Dropdownmenü ist eine Liste von Optionen auf einer Website, die nur angezeigt wird, wenn ein Benutzer mit dem Menu interagiert, z. B. indem er darauf klickt oder mit dem Mauszeiger darüber fährt. Wenn das Dropdownmenü angezeigt wird, können die Benutzer auf eine der aufgeführten Optionen clicken. Das Dropdownmenü verschwindet dann, wenn der Benutzer nicht mehr mit dem Menu interagiert.

    Ein effektives Website-Design sollte klar, einheitlich und einfach sein. Es sollte nicht zu viele Bilder und nicht zu viel Text enthalten. Es kann jedoch schwierig sein, eine Website übersichtlich zu gestalten, insbesondere, wenn du viele Inhalte einfügen möchtest. В этой осенью вы найдете раскрывающееся меню, в котором можно найти Lösung. Mit einem Dropdownmenü lässt sich deine Website einfach und effektiv organisieren, sodass Benutzer Problemlos das finden, wonach siesuchen.

    Готово ли проверить выпадающее меню?

    Ein Dropdownmenü ist ausschlaggebend für eine funktionale Unternehmenwebsite. Der Zweck eines Dropdownmenüs ist es, Platz auf dem Bildschirm zu Sparen und den Benutzern trotzdem den Zugriff auf sämtliche Inhalte deiner Website zu ermöglichen.

    Ein Dropdownmenü auf der Website deines Unternehmens hat viele Vorteile, wie z. B.:

    • Gute Navigation: Anstatt wichtige Links überall auf deiner Website zu platzieren, sind sie in einem Dropdownmenü übersichtlich an einem Ort angeordnet. Damit wird die Benutzerfreundlichkeit verbessert, da deine Benutzer nicht mehr nach dem gewünschten Linksuchen müssen. Alle Links befinden sich ganz einfach in deinem Dropdownmenü.
    • Verbessertes Дизайн веб-сайтов: Ein gutes Дизайн веб-сайтов очень универсален и функционален. Eine unübersichtliche, überladene Website wird deinen Benutzern Probleme bereiten und zur Folge haben, dass sie lieber wegklicken und zur Konkurrenz gehen. Ein Dropdownmenü ist extrem platzsparend. Den Platz kannst du dann entweder freilassen oder für Bilder verwenden.
    • Sorgt für mehr Platz in der Seitenleiste: Selbst wenn du alle Kategorien deiner Website in der Seitenleiste anordnest, kann das unübersichtlich und erdrückend wirken. Das Schöne an einem Dropdownmenü ist, dass es nur erscheint, wenn der Benutzer darauf klickt oder mit der Maus darüber fährt. Es nimmt также nicht den gesamten Platz in deiner Seitenleiste ein.
    • Профессиональная служба по адресу: Deine Website wird für alle möglichen Leute interessant sein, einschließlich potenzieller Kunden und Geschäftspartner. Daher muss sie professionalell aussehen. Eine unübersichtliche Website sieht definitiv nicht professionalell aus. Eine Professional Website sorgt dafür, dass die Benutzer auf der Website bleiben und letztendlich das kaufen, был дю verkaufst.

    HTML- и CSS-раскрывающиеся меню

    Beim Erstellen Eines Dropdownmenüs für die Веб-сайт определяет Unternehmens hast du zwei Codierungsmöglichkeiten: HTML и CSS. HTML используется для «языка разметки гипертекста» и CSS для «языка каскадных таблиц стилей».

    Sowohl HTML als auch CSS haben ihre Vor- und Nachteile, und es ist wichtig, die Unterschiede zu kennen, damit du entscheiden kannst, welche Methode für dein Dropdownmenü besser geeignet ist.

    Zu den Vorteilen von HTML zählt, dass es einfach zu schreiben ist und jeder Browser die HTML-Sprache unterstützt. HTML-код меньше, чем außerdem sehr schnell herunterladen, da der Text komprimierbar ist. Zu den Nachteilen von HTML-Code zählt jedoch, dass damit nur statische und einfache Seiten erstellt werden können und es keine umfangreichen Sicherheitsfunktionen gibt. Insbesondere im Vergleich zu CSS sind die Gestaltungsmöglichkeiten bei HTML-Code sehr begrenzt.

    Sehen wir uns nun die Vor- und Nachteile von CSS an. Zu den Vorteilen von CSS zählt, dass du mehrere Dokumente auf einmal aktualisieren kannst und keine weiteren Informationen zum Abrufen von Informationen benötigst. CSS ist auch weniger zeitaufwändig und leichter zu verwalten. Einige Nachteile от CSS sind, dass es anfällig ist und nicht von jedem Browser unterstützt wird. In der Regel dauert es auch länger, bis man sich mit CSS auskennt, da es so komplex ist.

    Beide Sprachen sind notwendig, um eine funktionale und attraktive Website zu erstellen, aber es gibt einige Fälle, in denen die eine besser geeignet ist als die andere. Wenn du beispielsweise lediglich den Style Deiner Website verbessern oder die Darstellung deiner Website bearbeiten möchtest, dann verwende CSS. Wenn du jedoch den Inhalt deiner Структурированный веб-сайт, основанный на HTML. Um eine привлекательный веб-сайт zu erstellen, die Марка определяет Unternehmens widespiegelt, empfiehlt es sich allerdings meistens, HTML und CSS gemeinsam zu verwenden.

    So erstellst du ein HTML-Dropdownmenü

    Nachdem wir nun erklärt haben, was ein Dropdownmenü ist und warum es für eine gute Веб-сайт, который является, шерстяным без ансегена, с человеком, который имеет HTML-Dropdownliste erstellt. Die Verwendung von HTML für ein Dropdownmenü ist eigentlich recht einfach. Es gibt zwei Optionen für Dropdownmenüs: eines, das auf den Mauszeiger reagiert, und eines mit Mehrfachauswahl.

    Ein Dropdownmenü, das auf den Mauszeiger reagiert, ist die einfachste Art von Dropdownmenü. Es erscheint nur, wenn der Benutzer den Mauszeiger darüber bewegt. Bei einem Dropdownmenü mit Mehrfachauswahl kann ein Benutzer mehrere Optionen aus einem Menu auswählen. Der Prozess zum Erstellen dieser Menus unterscheidet sich geringfügig, aber hier sind die Schritte zum Erstellen einer HTML-Dropdown-list:

    1. Erstellen eines div mit dem Klassennamen «раскрывающийся список». Der erste Schritt in diesem Prozess besteht darin, ein div zu erstellen und das Klassenattribut auf «dropdown» festzulegen. Anschließend musst du in CSS die Anzeige des div auf «inline-block» und die Position on «relative» festlegen. Auf diese Weise wird sichergestellt, dass der Inhalt des Dropdownmenüs unterhalb der Dropdownschaltfläche angezeigt wird.
    2. Erstellen der Hover-Funktion. Anschließend musst du ein Element erstellen, das die Dropdownliste anzeigt, wenn jemand mit dem Mauszeiger darüber fährt. Wenn du dafür eine Schaltfläche erstellen möchtest, musst du sie innerhalb des div positionieren.
    3. Erstellen und Gestalten des Dropdowninhalts. Nun musst du entscheiden, welche Inhalte dein Dropdownmenü enthalten soll. Beachte, dass dieser Inhalt nur erscheint, wenn jemand mit dem Mauszeiger darüber fährt. Der Inhalt wird in ein div mit dem Klassennamen «Dropdown-Inhalt» eingeschlossen.
    4. Sicherstellen, dass das Dropdownmenü auf den Mauszeiger reagiert. Um sicherzustellen, dass das Dropdownmenü wirklich erscheint, wenn jemand mit der Maus darüber fährt, musst du die Anzeigeeigenschaft des div mit der Pseudo-Klasse «hover» festlegen.
    5. Gestaltung des Inhalts im Dropdownmenü. In diesem Schritt verwendest du CSS, um den Inhalt im Dropdownmenü so zu gestalten, dass er ansprechend aussieht. Du kannst auch die Farbe der Dropdown-Links beim Bewegen der Maus ändern.

    Dropdownmenü mit Mehrfachauswahl

    Bei einem Dropdownmenü, das auf den Mauszeiger reagiert, können Benutzer nur eine Option auswählen. Bei einem Dropdownmenü mit Mehrfachauswahl können Benutzerhingen verschiedene Optionen auswählen. Hier sind die Schritte zum Erstellen eines Dropdownmenüs mit Mehrfachauswahl:

    1. Erstellen eines label-Elements. Zuerst musst du ein — Element hinzufügen. Ein label-Element verknüpft ein Text-Label mit einem Formular- -Feld. Wenn dein Dropdownmenü beispielsweise eine Liste mit Frühstücksrezepten enthält, lautet dein Attribute in etwa «Frühstücksrezepte». In diesem Fall würde dein HTML-код wie folgt aussehen Wähle ein Frühstücksrezept aus: .
    2. Erstellen eines select-Elements. Der nächste Schritt beim Erstellen eines Dropdownmenüs mit Mehrfachauswahl besteht darin, ein select-Element hinzuzufügen. Das select-Element wird verwendet, um aus einer Reihe von Optionen in einer Liste auswählen zu können. Bei einem Dropdownmenü mit Mehrfachauswahl musst du allerdings das «multiple» — Attribut zum