여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. How To - 검색/필터 드롭다운
How To – 검색/필터 드롭다운
4개월전 작성
5개월전 수정

w3.css

검색/필터 드롭다운

CSS와 JavaScript를 사용하여 드롭다운 메뉴에서 항목을 검색하는 방법을 알아보자.

클릭 가능한 드롭다운 만들기

사용자가 버튼을 클릭하면 나타나는 드롭다운 메뉴를 만든다.

1단계) 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>)를 사용한다.

CSS를 사용하여 <div> 요소를 버튼과 <div> 주위에 감싸서 드롭다운 메뉴를 올바른 위치에 배치한다.

2단계) CSS 추가
/* Dropdown Button */
.dropbtn {
  background-color: #04AA6D;
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}

/* Dropdown button on hover & focus */
.dropbtn:hover, .dropbtn:focus {
  background-color: #3e8e41;
}

/* The 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;
}

/* The search field when it gets focus/clicked on */
#myInput:focus {outline: 3px solid #ddd;}

/* The container 
- needed to position the dropdown content */ .dropdown { position: relative; display: inline-block; } /* Dropdown Content (Hidden by Default) */ .dropdown-content { display: none; position: absolute; background-color: #f6f6f6; min-width: 230px; border: 1px solid #ddd; z-index: 1; } /* Links inside the dropdown */ .dropdown-content a { color: black; padding: 12px 16px; text-decoration: none; display: block; } /* Change color of dropdown links on hover */ .dropdown-content a:hover {background-color: #f1f1f1} /* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */ .show {display:block;}

드롭다운 버튼의 배경색, 패딩, 호버 효과 등의 스타일을 지정했다.

이 .dropdown클래스는 position:relative를 사용한다. 이는 드롭다운 콘텐츠를 드롭다운 버튼 바로 아래에 배치하려는 경우에 필요하다(position:absolute).

클래스 .dropdown-content는 실제 드롭다운 메뉴를 보유한다. 기본적으로 숨겨져 있으며, 호버하면 표시됩니다(아래 참조). 는 min-width230px로 설정되어 있습니다. 자유롭게 변경하세요. 팁: 드롭다운 콘텐츠의 너비를 드롭다운 버튼만큼 넓게 하려면 를 width100%로 설정하세요(그리고 overflow:auto작은 화면에서 스크롤을 활성화하세요).

검색 필드(#myInput)는 드롭다운 메뉴에 맞게 스타일이 지정되었습니다. 검색 아이콘을 추가했는데, 검색 필드 내부 왼쪽에 배치하여 이것이 실제로 검색 필드임을 나타냅니다.

배경색, 패딩, 호버 효과 등으로 드롭다운 버튼의 스타일을 지정했다.

.dropdown 클래스는 position:relative를 사용하는데, 이는 드롭다운 콘텐츠를 드롭다운 버튼 바로 아래에 배치할 때 필요하다(위치:절대값 사용).

.dropdown-content 클래스는 실제 드롭다운 메뉴를 보유한다. 이 클래스는 기본적으로 숨겨져 있으며 마우스를 가리키면 표시된다. 최소 너비는 230px로 설정되어 있다. 자유롭게 변경할 수 있다. 팁: 드롭다운 콘텐츠의 너비를 드롭다운 버튼만큼 넓게 하려면 width를 100%로 설정하자(작은 화면에서 스크롤을 사용하려면 overflow:auto를 설정하자).

검색 필드(#myInput)의 스타일이 드롭다운 메뉴 안에 들어가도록 변경되었다. 검색 필드 내부 왼쪽에 검색 아이콘을 추가하여 실제로 검색 필드임을 표시했다.

3단계) ​​JavaScript 추가
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
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";
    }
  }
}

기본 예시
예제 보기

참고

Mingg`s Diary
밍구
밍구
공부 목적 블로그