Reputation: 2901
I have a simple flexbox scenario - parent, few items etc.
I need to selectively hide one of the child items, which I do using display: none
.
However, at a later point, I need to reinstate the item visibility - but as what? I It's not a flex
, and I don't think it's an inline-flex
, so what is it?
I can't use display: unset
as it only seems to be moderately supported. Any ideas?
.container {
margin: 40px;
}
.flexbox-container {
display: flex;
}
.flexbox-item {
flex: 1 0 0;
height: 40px;
background-color: aqua;
}
.flexbox-item:not(:first-child) {
margin-left: 20px;
}
.hide-item {
display: none;
}
<div class="container">
<div class="flexbox-container">
<div class="flexbox-item">child</div>
<div class="flexbox-item hide-item">child</div>
<div class="flexbox-item">child</div>
</div>
</div>
Upvotes: 1
Views: 5621
Reputation: 29511
.flexbox-container
has display: flex
.
So all the child elements of .flexbox-container
are flex-children.
If you add .hide-item
to one of those child elements, that element now has display: none
.
If you remove .hide-item
from that child element it goes back to being a flex-child again.
Example:
const hiddenChild = document.querySelector('.hide-item');
hiddenChild.classList.remove('hide-item');
Upvotes: 1
Reputation: 115342
Just reset it back to display:block
.container {
margin: 40px;
}
.flexbox-container {
display: flex;
}
.flexbox-item {
flex: 1 0 0;
height: 40px;
background-color: aqua;
}
.flexbox-item:not(:first-child) {
margin-left: 20px;
}
input:checked+.flexbox-container>.hide-item {
display: block;
}
.hide-item {
display: none;
}
<div class="container">
<label>Toggle This</label>
<input type="checkbox">
<div class="flexbox-container">
<div class="flexbox-item">child</div>
<div class="flexbox-item hide-item">child</div>
<div class="flexbox-item">child</div>
</div>
</div>
Upvotes: 4