Как搜索/фильтровать выпадающее меню
- Предыдущая страница Фильтрация элементов
- Следующая страница Сортировка списка
Узнайте, как использовать CSS и JavaScript для поиска элементов в выпадающем меню.
Фильтрация выпадающего меню
Создайте кликабельное выпадающее меню
Создайте выпадающее меню, которое появляется при нажатии пользователем на кнопку.
Шаг 1 - Добавление HTML:
<div class="dropdown"> <button onclick="myFunction()" class="dropbtn">Выпадающее меню</button> <div id="myDropdown" class="dropdown-content"> <input type="text" placeholder="Поиск.." id="myInput" onkeyup="filterFunction()"> <a href="#about">О нас</a> <a href="#base">Основы</a> <a href="#blog">Блог</a> <a href="#contact">Контакт</a> <a href="#custom">Настройка</a> <a href="#support">Поддержка</a> <a href="#tools">Инструменты</a> </div> </div>
Пример объяснения:
Вы можете использовать любой элемент для открытия выпадающего меню, например, <button>, <a> или <p> элемент.
Создайте выпадающее меню с помощью контейнерного элемента (например, <div>) и добавьте в него ссылки для выпадающего меню.
Оберните кнопку и другой <div> элементом, чтобы с помощью CSS точно определить местоположение выпадающего меню.
Шаг 2 - Добавление CSS:
/* Выпадающее меню кнопка */ .dropbtn { background-color: #04AA6D; color: white; padding: 16px; font-size: 16px; border: none; cursor: pointer; } /* Нажатие и фокусировка на кнопке выпадающего меню */ .dropbtn:hover, .dropbtn:focus { background-color: #3e8e41; } /* Поисковое поле */ #myInput { box-sizing: border-box; background-image: url('searchicon.png'); background-position: 14px 12px; background-repeat: no-repeat; font-size: 16px; padding: 14px 20px 12px 45px; border: none; border-bottom: 1px solid #ddd; } /* При фокусировке или нажатии на поисковую строку */ #myInput:focus {outline: 3px solid #ddd;} /* Контейнер <div> - для позиционирования содержимого выпадающего меню */ .dropdown { position: relative; display: inline-block; } /* Содержимое выпадающего меню (по умолчанию скрыто) */ .dropdown-content { display: none; position: absolute; background-color: #f6f6f6; min-width: 230px; border: 1px solid #ddd; z-index: 1; } /* Ссылки в выпадающем меню */ .dropdown-content a { color: black; padding: 12px 16px; text-decoration: none; display: block; } /* Изменять цвет ссылки при наведении мыши на выпадающее меню */ .dropdown-content a:hover {background-color: #f1f1f1} /* Показывать выпадающее меню (при нажатии на кнопку меню, использовать JS для добавления этого класса в контейнер .dropdown-content) */ .show {display:block;}
Пример объяснения:
мы стилизовали кнопку меню, включая цвет фона, отступы, эффект при наведении и т.д.
.dropdown
класс используется position:relative
потому что мы хотим, чтобы содержимое下拉-меню находилось точно под кнопкой меню (используя position:absolute
implementiruet).
.dropdown-content
класс содержит фактическое содержимое下拉-меню. По умолчанию он скрыт и отображается при наведении (см. ниже). Обратите внимание,min-width
установлено на 230px. Вы можете изменить его по своему усмотрению. Примечание: если вы хотите, чтобы ширина содержимого下拉-меню была такой же, как у кнопки меню, вы можете установить width
установите на 100% (и overflow
установите на auto, чтобы на маленьких экранах включить скроллинг).
Поисковая строка (#myInput) уже стилизирована, чтобы соответствовать содержимому下拉-меню. Мы добавили иконку поиска, которая находится слева в поисковой строке, чтобы указать, что это поисковая строка.
Шаг 3 - Добавьте JavaScript:
/* При нажатии на кнопку切换下拉内容的隐藏和显示 */ function myFunction() { document.getElementById("myDropdown").classList.toggle("show"); } function filterFunction() { var input, filter, ul, li, a, i; input = document.getElementById("myInput"); filter = input.value.toUpperCase(); div = document.getElementById("myDropdown"); a = div.getElementsByTagName("a"); for (i = 0; i < a.length; i++) { txtValue = a[i].textContent || a[i].innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { a[i].style.display = ""; } else { a[i].style.display = "none"; } } }
Связанные страницы
Уроки:CSS-выпадающий список
- Предыдущая страница Фильтрация элементов
- Следующая страница Сортировка списка