Search Bar Animasi
Bilah pencarian minimalis yang meluas dengan mulus saat Anda mengeklik ikonnya.
HTMLCSS
ringkasan
Bilah pencarian minimalis diimplementasikan hanya dengan CSS yang meluas dengan lancar saat Anda mengklik ikonnya. Dengan memanfaatkan kelas semu :focus-within, animasi interaktif dicapai tanpa menggunakan JavaScript.
Kode
###HTML
<div class="search-container">
<div class="search-box">
<input type="text" class="search-input" placeholder="Search..." />
<button class="search-btn" aria-label="Search">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg>
</button>
</div>
</div>
CSS
.search-container {
display: flex;
justify-content: center;
align-items: center;
padding: 2rem;
background-color: #f8fafc;
border-radius: 12px;
}
.search-box {
position: relative;
display: inline-flex;
align-items: center;
}
.search-input {
width: 56px;
height: 56px;
border-radius: 28px;
border: none;
outline: none;
padding: 0 20px;
font-size: 16px;
font-family: inherit;
background-color: #ffffff;
color: transparent; /* Sembunyikan teks saat tidak fokus */
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05), 0 8px 10px -6px rgba(0, 0, 0, 0.01);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer;
}
.search-input::placeholder {
color: transparent;
transition: color 0.4s ease;
}
/* Gaya saat fokus */
.search-box:focus-within .search-input {
width: 280px;
padding-right: 56px;
color: #1e293b;
cursor: text;
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.01);
}
.search-box:focus-within .search-input::placeholder {
color: #94a3b8;
transition-delay: 0.2s;
}
.search-btn {
position: absolute;
right: 0;
width: 56px;
height: 56px;
border: none;
background: transparent;
border-radius: 28px;
display: flex;
align-items: center;
justify-content: center;
color: #64748b;
pointer-events: none; /* Pass click events to underlying input initially */
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.search-btn svg {
width: 20px;
height: 20px;
transition: transform 0.4s ease;
}
/* Button style on focus */
.search-box:focus-within .search-btn {
color: #3b82f6;
pointer-events: auto; /* Berfungsi sebagai tombol ketika diperluas */
cursor: pointer;
}
.search-box:focus-within .search-btn:hover {
color: #2563eb;
}
.search-box:focus-within .search-btn svg {
transform: scale(1.1);
}