У меня есть два окна поиска появляются на верхней части (мобильный) страницы:Горизонтально разрушаться вход с дисплеем: сгибать
Желаемое поведение на фокус (т.е. щелкните внутри одной из коробок) является :
- выбранное окно расширяет
- другой ящик разрушается горизонтально
- близкий значок расширяется справа.
Вот что он выглядит как после перехода:
Это код:
<div class="navigation--mobile__search">
<div class="header-searchfield" id="kurssuche">
<input type="text" class="header-searchfield__input" placeholder="Search1">
<a href="">
<span class="icon icon--lupe">
<svg class="icon__svg">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/assets/svg/svg-symbol.svg#lupe"></use>
</svg>
</span>
</a>
</div>
<div class="header-searchfield" id="volltextsuche">
<input type="text" class="header-searchfield__input" placeholder="Search2">
<a href="">
<span class="icon icon--lupe">
<svg class="icon__svg">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/assets/svg/svg-symbol.svg#lupe"></use>
</svg>
</span>
</a>
</div>
<span class="icon icon--close-x header-searchfield__close-button" style="display: none;">
<svg class="icon__svg">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/assets/svg/svg-symbol.svg#close-x"></use>
</svg>
</span>
</div>
соответствующие LESS-классы:
.navigation--mobile__search {
background: @common-quarks-color--cd-anthracite;
display: flex;
padding: .625rem .75rem;
position: relative;
.header-searchfield {
display: flex;
flex: 1;
&__input {
flex-grow: 1;
padding: .5625rem 2rem .5625rem .8125rem;
}
&__close-button {
flex: 0 0 1.8rem;
color: white;
display: none;
margin: .7rem 0 .7rem .5rem;
svg {
fill: @searchfield--border-color;
height: .8125rem;
width: .8125rem;
}
}
}
}
И javascript:
$(function() {
$("#kurssuche")
.focusin(function() {
$("#volltextsuche").hide(500);
$(".header-searchfield__close-button").show(500);
$(".navigation--mobile__search-results").animate({height: "400px"}, 500);
})
.focusout(function() {
$("#volltextsuche").show(500);
$(".header-searchfield__close-button").hide(500);
$(".navigation--mobile__search-results").animate({height: "0"}, 500);
});
$("#volltextsuche")
.focusin(function() {
$("#kurssuche").hide(500);
$(".header-searchfield__close-button").show(500);
$(".navigation--mobile__search-results").animate({height: "400px"}, 500);
})
.focusout(function() {
$("#kurssuche").show(500);
$(".header-searchfield__close-button").hide(500);
$(".navigation--mobile__search-results").animate({height: "0"}, 500);
});
$(".header-searchfield__close-button").on('click', function() {
$(".header-searchfield__input").val("");
});
});
Проблема
Для желаемого поведения горизонтально рушится, я обычно просто захватить DIV с входом, который не выбран, и анимировать ширину до 0. Это не работает, потому что wrapper div display: flex
- Я попытался поэкспериментировать с flex:
-Attribute, но он, похоже, не работает. Есть ли уловка для анимации flex-divs до ширины 0?
Fiddle:https://jsfiddle.net/amear6x0/
могли бы вы опубликовать сниппета/скрипку тоже? – kukkuz
Чтобы свернуть flex-child, обязательно добавьте 'min-width: 0'. Тогда это должно быть хорошо ... возможно, также добавьте 'overflow: hidden'. –
@kukkuz Я сделал скрипку: https://jsfiddle.net/amear6x0/ –