Этого можно добиться с помощью Javascript, сделав mouseLeave () eventListner для элемента .search-text
.
Это предотвратит закрытие панели поиска. как только он был найден и содержит значение ..
Здесь код,
if(search.value){
search.style.width = "240px";
search.style.padding = "0 6px";
}
Проверяет, присутствует ли какое-либо значение в поле ввода поиска, в таком случае он будет поддерживать то же самое Ширина как при наведении.
А рабочий фрагмент выглядит следующим образом:
const search = document.querySelector('.search-text');
search.addEventListener('mouseleave', () => {
if(search.value){
search.style.width = "240px";
search.style.padding = "0 6px";
}
})
.search-box{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
background: #474646;
height: 40px;
border-radius: 50px;
padding: 10px;
}
.search-box .search-btn{
margin-top: -10px;
color: #bb14bb;
float: right;
width: 40px;
height: 40px;
border-radius: 50%;
background: #474646;
display: flex;
justify-content: center;
align-items: center;
transition: .4s;
}
.search-box .search-text{
margin-top: -10px;
border:none;
background: none;
outline: none;
float: left;
padding: 0;
color: white;
font-size: 16px;
transition: .4s;
line-height: 40px;
width: 0px;
}
.search-box:hover > .search-text{
width: 240px;
padding: 0 6px;
}
<div class="search-box">
<input class="search-text" type="text" name="box" placeholder="Search here...">
<a class="search-btn" href="#">
<i class="fas fa-search"></i>
</a>
</div>
Примечание: Вы также можете добавить CSS как,
.search-text:focus{
width: 240px;
padding: 0 6px;
}
, но это будет закройте окно поиска, когда вы щелкнете за пределами поля поиска, даже если в нем есть значение, поэтому было бы лучше, если бы вы обрабатывали его JS
способом.