如何搜索/筛选下拉菜单

学习如何使用 CSS 和 JavaScript 在下拉菜单中搜索项目。

过滤下拉菜单

亲自試試

创建可点击的下拉菜单

创建一个当用户单击按钮时出现的下拉菜单。

第一步 - 添加 HTML:

<div class="dropdown">
  <button onclick="myFunction()" class="dropbtn">Dropdown</button>
  <div id="myDropdown" class="dropdown-content">
    <input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
    <a href="#about">About</a>
    <a href="#base">Base</a>
    <a href="#blog">Blog</a>
    <a href="#contact">Contact</a>
    <a href="#custom">Custom</a>
    <a href="#support">Support</a>
    <a href="#tools">Tools</a>
  </div>
</div>

例子解釋:

可以使用任何元素来打开下拉菜单,例如一个 <button>,<a> 或 <p> 元素。

使用一个容器元素(如 <div>)来创建下拉菜单,并在其中添加下拉菜单的链接。

使用一个 <div> 元素将按钮和另一个 <div> 包裹起来,以便使用 CSS 正确定位下拉菜单。

第二步 - 添加 CSS:

/* Dropdown 菜单按钮 */
.dropbtn {
  background-color: #04AA6D;
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}
/* Dropdown button kapag napapalapit o nakatutok ng mouse */
.dropbtn:hover, .dropbtn:focus {
  background-color: #3e8e41;
}
/* Search field */
#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;
}
/* Kapag napapalapit ang search box o tinatangkang i-click */
#myInput:focus {outline: 3px solid #ddd;}
/* Container <div> - ginagamit upang lokalisahin ang kontento ng dropdown menu */
.dropdown {
  position: relative;
  display: inline-block;
}
/* Kontento ng dropdown menu (default ay nakahihintay) */
.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f6f6f6;
  min-width: 230px;
  border: 1px solid #ddd;
  z-index: 1;
}
/* Links sa loob ng dropdown menu */
.dropdown-content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}
/* Palitan ang kulay ng link kapag napapalapit ng mouse sa dropdown menu */
.dropdown-content a:hover {background-color: #f1f1f1}
/* Magpakita ng dropdown menu (kapag tinatangkang i-click ng user ang dropdown menu button, gamitin ang JS upang idagdag ang ganitong klase sa .dropdown-content container) */
.show {display:block;}

例子解釋:

我們已對下拉菜單按鈕進行了樣式設計,包括背景色、內邊距、懸停效果等。

.dropdown 類使用 position:relative,這是因為我們希望下拉內容能夠正好位於下拉菜單按鈕的下方(通過使用 position:absolute 實現)。

.dropdown-content 類包含實際的下拉菜單。默認情況下,它是隱藏的,並且會在懸停時顯示(參見下文)。注意,min-width 被設置為 230px。你可以根據需要修改它。提示:如果你希望下拉內容的寬度與下拉菜單按鈕一樣寬,那麼可以將 width 設置為 100%(並將 overflow 設置為 auto,以便在小屏幕上啟用滾動)。

搜索框(#myInput)已進行了樣式設計,以適應下拉菜單內部。我們已添加一個搜索圖標,它位於搜索框內部的左側,用於指示這其實是一個搜索框。

第三步 - 添加 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 下拉菜单

教程:如何创建可悬停的下拉菜单