Animasyonlu Arama Çubuğu
Simgeye tıkladığınızda sorunsuz bir şekilde genişleyen minimalist bir arama çubuğu.
HTMLCSS
genel bakış
Yalnızca CSS ile uygulanan ve simgeye tıkladığınızda sorunsuz bir şekilde genişleyen minimalist bir arama çubuğu. :focus-within sözde sınıfını kullanarak, JavaScript kullanılmadan etkileşimli animasyon elde edilir.
Kod
###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; /* Odaklanmadığınızda metni gizleyin */
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;
}
/* Odaklanıldığında stil */
.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; /* Genişletildiğinde buton işlevi görür */
cursor: pointer;
}
.search-box:focus-within .search-btn:hover {
color: #2563eb;
}
.search-box:focus-within .search-btn svg {
transform: scale(1.1);
}