X 버튼 없애기와 커스텀 스타일하기
CSS로 <input type="search">
의 X 버튼을 없애는 방법에 대해 알아보겠습니다.
또한, 커스텀으로 X 버튼을 스타일하는 방법에 대해서도 알아봅니다.
매우 간단하고 쉽습니다.
X 버튼을 없애는 방법
웹 페이지에서 <input type="search">
를 사용할 때, 사용자가 검색어를 입력하면 기본적으로 나타나는 X 버튼(검색어 지우기 버튼)이 있습니다. 이 버튼은 사용자가 입력한 내용을 쉽게 지울 수 있도록 도와주지만, 일부 경우에서는 이 버튼을 제거하거나 커스터마이징하고 싶을 수 있습니다.

이 X 버튼은 Safari, Chrome, Edge, Opera, Vivaldi와 같은 WebKit 및 Blink 엔진을 사용하는 브라우저에서 적용됩니다.
Firefox와 같은 브라우저에서는 기본적으로 X 버튼이 표시되지 않으므로, 앞으로 제시하는 코드 예제는 WebKit/Blink 기반 브라우저에서만 해당됩니다.
/*
== 기본 검색 필드 UI 제거하기 ==
[type="search"]에 대한 스타일을 설정합니다.
-webkit-appearance: textfield;는 기본 검색 입력 필드의 네이티브 UI를 제거하는 역할을 합니다.
이를 통해 돋보기 아이콘이나 기본적인 X 버튼과 같은 브라우저 기본 스타일이 제거됩니다.
*/
[type="search"] {
-webkit-appearance: textfield; /* 기본(네이티브) 모양을 제거 */
}
/*
== X 버튼과 검색 결과 버튼 숨기기 ==
WebKit 및 Blink 엔진을 사용하는 브라우저에서 검색어를 지울 수 있는 X 버튼과
검색 결과 버튼을 숨깁니다.
이 두 선택자는 'X' 버튼과 검색 기록을 표시하는 버튼을 제어합니다.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-results-button {
display: none; /* X 버튼 및 검색 결과 버튼 숨기기 */
}
<label for="user-search">검색</label>
<input type="search" id="user-search" placeholder="검색어를 입력해 보세요..">
설명
위 코드에 대해 자세히 설명합니다.
기본 검색 필드 UI 제거하기
-webkit-appearance: textfield;
속성은 Safari, Chrome, Edge, Opera, Vivaldi와 같은 WebKit 및 Blink 엔진을 사용하는 브라우저에서 기본적인 검색 입력 필드 UI를 제거합니다. 이로써 기본적으로 나타나는 X 버튼과 일부 브라우저에서 보이는 돋보기 아이콘이 보이지 않게 됩니다.
[type="search"] {
-webkit-appearance: textfield; /* 기본(네이티브) 모양을 제거 */
}
부연설명
appearance
속성은
각 브라우저에서 제공하는 버튼이나 입력 필드 등 컨트롤 요소의 기본 모양을 제어하는 데 사용됩니다.
-webkit-appearance
는 WebKit 및 Blink 엔진을 사용하는 브라우저에서만 적용됩니다.
X 버튼과 검색 결과 버튼 숨기기
::-webkit-search-cancel-button
과 ::-webkit-search-results-button
은 각각 X 버튼(검색어 지우기 버튼)과 검색 결과 버튼(이전 최근 검색 쿼리에서 선택할 수 있는 메뉴가 표시되며 검색 기록을 보여주는 버튼)을 제어하는 선택자입니다. 이 선택자들을 사용하여 X 버튼과 검색 결과 버튼을 숨길 수 있습니다.
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-results-button {
display: none; /* X 버튼 및 검색 결과 버튼 숨기기 */
}
::-webkit-search-cancel-button
과 ::-webkit-search-results-button
의 브라우저 호환성을 참조하세요.
마지막 업데이트 정보: 2024-11-18
선택자 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
::-webkit-search-cancel-button
|
1 | 79 | 지원하지 않음 | 3 |
::-webkit-search-results-button
|
1 | 79 | 지원하지 않음 | 3 |
이 기능은 비표준입니다.
모든 사용자에게 적합하지 않을 수도 있습니다. 구현 간에 호환되지 않는 부분이 많을 수도 있으며 향후 동작이 변경될 수도 있습니다.
커스텀으로 X 버튼을 스타일하는 방법
웹 페이지에서 <input type="search">
를 사용할 때, 사용자가 검색어를 입력하면 기본적으로 나타나는 X 버튼(검색어 지우기 버튼)이 있습니다. 이 버튼은 검색창에 입력한 내용을 빠르게 지울 수 있도록 돕지만, 때로는 이 버튼을 없애거나 스타일을 변경하고 싶을 때가 있습니다.
이번에는 이 기본적인 X 버튼을 커스터마이즈하여, 원하는 디자인으로 변경하는 방법을 소개할 것입니다. 간단한 자바스크립트와 CSS로 버튼의 모양을 바꿀 수 있으며, 이를 통해 좀 더 개성있는 UI를 만들 수 있습니다.
<label for="user-search">검색</label>
<div class="searchbox-container">
<input type="search" id="user-search" class="searchbox" placeholder="검색어를 입력해 보세요..">
<button type="button" class="search-reset" aria-label="검색어 지우기" disabled></button>
</div>
/* X 버튼을 없애는 방법 */
[type="search"] {
appearance: textfield;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-results-button {
display: none;
}
/* 커스텀으로 X 버튼을 스타일하는 방법 */
.searchbox-container {
position: relative;
display: inline-block;
}
.searchbox {
padding-right: 1.5em;
}
.search-reset {
position: absolute;
width: 1em;
height: 1em;
border: 1px solid green;
padding: 0;
cursor: pointer;
background: green;
border-radius: 50%;
top: 50%;
right: .5em;
transform: translateY(-50%) rotateZ(45deg);
z-index: 1;
transition: all .065s;
}
.search-reset::before,
.search-reset::after {
content: "";
position: absolute;
width: 0.6em;
height: 2px;
background: #fff;
top: calc(50% - 1px);
left: calc(50% - 0.3em);
}
.search-reset::after {
transform: rotateZ(90deg);
}
.search-reset:disabled {
visibility: hidden;
opacity: 0;
pointer-events: none;
}
const searchBoxContainer = document.querySelectorAll(".searchbox-container");
searchBoxContainer.forEach(search => {
const searchBox = search.firstElementChild;
const searchReset = searchBox.nextElementSibling;
searchBox.addEventListener("input", function() {
const thisSearchInputValue = this.value.replace(/\s/g, "");
if (thisSearchInputValue === "") {
searchReset.setAttribute("disabled", "");
} else {
searchReset.removeAttribute("disabled");
}
});
searchReset.addEventListener("click", function() {
searchBox.value = "";
this.setAttribute("disabled", "");
});
});
실제 적용된 모습에서 검색창에 검색어를 입력하면 커스텀으로 작성한 X 버튼이 표시됩니다.