[英]Unable to hide flex items by changing width or flex-basis
我想達到這個效果:
在默認狀態下,有四個按鈕。 其中之一是“移動”按鈕。
當用戶單擊它時,我想展開按鈕並顯示其他文本和輸入。
但是我無法達到“默認狀態”。 'To' 總是出現。 我試過flex-basis
和width: 0px
但沒有效果,像這樣
如何在不使用display:none
情況下隱藏彈性框元素。 不使用display
主要原因是因為我想在寬度上使用一些 css 動畫來擴展小部件。
這是 HTML 代碼:
<div class="multiselect-controls">
<span class="multiselect-controls-container medium-theme">
<button type="submit" class="btn btn-multi-select multi-edit">
<span class="multiselect-text">Edit</span>
</button>
<button type="submit" class="btn btn-multi-select multi-copy">
<span class="multiselect-text">Copy</span>
</button>
<button type="submit" class="btn btn-multi-select multi-move" onclick="expandMe();">
<span class="multiselect-text">Move</span>
<span class="multi-move-input">
to <input class="multi-move-to-target" type='text'></input>
</span>
</button>
<button type="submit" class="btn btn-multi-select multi-delete">Delete</button>
<span class='icon icon-cross close-multiselect-controls'></span>
</span>
</div>
和css(less)
代碼:
btn-multi-select {
display:flex;
width: 100px;
}
.multi-move-input {
flex-basis: 0px;
// overflow: hidden;
flex-grow: 0;
flex-shrink: 1;
}
.expanded {
&.multi-move {
width: 150px;
}
.multi-move-input {
flex-grow: 1;
flex-basis: auto;
}
}
.multi-move-to-target {
width: 30px;
height: 20px;
color: black;
}
Javascript:
function expandMe(event) {
$('.multi-move').toggleClass('expanded');
}
該代碼也可在此處獲得: http : //codepen.io/kongakong/pen/amdrJZ
如何在不使用
display:none
情況下隱藏彈性框元素? 不使用display
主要原因是因為我想在寬度上使用一些 css 動畫來擴展小部件。
您可以使用max-width
,這是一個 可動畫的屬性。
從0
開始,然后將其擴展為一些額外的大數。 該元素只會擴展到足以容納內容。
.multi-move-input {
display: inline-flex;
max-width: 0;
transition: .5s;
overflow: hidden;
}
.expanded {
&.multi-move { }
.multi-move-input {
max-width: 200px;
transition: 1s;
}
}
需要考慮的兩件事:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.