Simple Search Bar Using Html CSS & Javascript

HTML
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>

<div class="wrapper">
	<div class="search_box_wrap">
		<div class="search_box">
			<input type="text" name="search" placeholder="Search" class="input_search">
		</div>
		<div class="search_btn">
			<span class="icon">
				<ion-icon name="search-outline"></ion-icon>
			</span>
		</div>
		<div class="close_btn">
			<span class="icon">
				<ion-icon name="close-outline"></ion-icon>
			</span>
		</div>
	</div>
</div>
CSS
@import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');

:root{
	--bg-clr: #fbcb6c;
	--white: #fff;
	--srch-bg: #66b03d;
	--text-clr: #b5b5b5;
	--srch-hvr: #61cc26;
	--close-hvr: #d2ffb9;
}

*{
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	outline: none;
	list-style: none;
	font-family: 'Open Sans', sans-serif;
}

::placeholder { 
  color: var(--text-clr);
  opacity: 1;
}

body{
	background: var(--bg-clr);
}

.wrapper{
	display: flex;
	height: 100vh;
	align-items: center;
	justify-content: center;
}

.search_box_wrap{
	position: relative;
	width: 350px;
	height: 60px;
}

.search_box_wrap .search_box{
	width: 100%;
	height: 60px;
}

.search_box_wrap .search_box .input_search{
	position: absolute;
	top: 0;
	right: 0;
	width: 0;
	border: 0;
	height: 60px;
	padding: 12px 0px;
	padding-right: 60px;
	font-size: 16px;
	border-radius: 35px;
	color: var(--text-clr);
	transition: all 0.2s ease;
}

.search_box_wrap .icon{
	display: flex;
}

.search_box_wrap .search_btn,
.search_box_wrap .close_btn{
	width: 60px;
	height: 60px;
	position: absolute;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: all 0.5s ease;
}

.search_box_wrap .search_btn{
	color: var(--white);
	background: var(--srch-bg);
	top: 0;
	right: 0px;
	font-size: 20px;
	z-index: 999;
}

.search_box_wrap .close_btn{
	color: var(--srch-bg);
	background: var(--white);
	top: 0px;
	right: 0px;
    font-size: 25px;
    opacity: 0;
}

.search_box_wrap .search_btn:hover{
	background: var(--srch-hvr);
}

.search_box_wrap .close_btn:hover{
	background: var(--close-hvr);
}

.search_box_wrap.active .search_btn{
	top: 5px;
	right: 5px;
	width: 50px;
	height: 50px;
}

.search_box_wrap.active .close_btn{
	opacity: 1;
  	transform: rotate(360deg);
  	right: -90px;
}

.search_box_wrap.active .search_box .input_search{
	padding: 12px 25px;
	padding-right: 70px;
  	width: 100%;
  	transition: all 0.5s ease;
	transition-delay: 0.75s;
}
JS
var search_btn = document.querySelector(".search_btn");
var close_btn = document.querySelector(".close_btn");
var search_box_wrap = document.querySelector(".search_box_wrap");
var input_search = document.querySelector(".input_search");

search_btn.addEventListener("click", function(){
	search_box_wrap.classList.add("active");
	input_search.focus();
});

close_btn.addEventListener("click", function(){
	search_box_wrap.classList.remove("active");
});

/* All credits to: https://www.youtube.com/watch?v=XOyjhRiO7RQ */

Autor: Compositu

Publicado: 13/05/2023

Compartir Elemento Web

Donar a Compositu
Otras formas de ayudar
  • Compártelo en tus redes sociales.
  • Recomienda los elementos.
  • Regístrate Aquí
  • Deja tu comentario agradeciendo el aporte.

Descarga el código completo del Elemento Web y archivos necesarios (imágenes, librerias, plugins, frameword, etc)

Deja tu comentario