Скрыть дочерний элемент flexbox и снова сделать его видимым

У меня есть простой сценарий flexbox - родитель, несколько элементов и т.д.

Мне нужно выборочно скрыть один из дочерних элементов, что я и делаю с помощью display: none.

Однако позже мне нужно восстановить видимость элемента, но как? I Это не flex, и я не думаю, что это inline-flex, так что же это?

Я не могу использовать display: unset, так как он поддерживается умеренно. Есть идеи?

.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>

Возможный дубликат Переключить отображение: нет стиля с помощью JavaScript

Heretic Monkey 30.05.2019 14:38

div - это блоки, поэтому display: "block"

adel 30.05.2019 14:39

Как вы это скрываете, можете ли вы поделиться сценарием ситуации в реальном времени здесь?

Code_Ninja 30.05.2019 14:39
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
3
2 597
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Просто сбросьте его обратно на 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>

Так просто! Я думал, что установка обратного режима отображения на блок переопределит статус div как дочернего элемента гибкого элемента, но, похоже, это работает.

John Ohara 30.05.2019 15:15

@JohnOhara даже встроенный блок будет работать или тоже initial (по теме: stackoverflow.com/a/55496749/8620333)

Temani Afif 30.05.2019 15:27

.flexbox-container есть display: flex.

Таким образом, все дочерние элементы .flexbox-container являются flex-потомками.

Если вы добавите .hide-item к одному из этих дочерних элементов, этот элемент теперь будет иметь display: none.

Если вы удалите .hide-item из этого дочернего элемента, он снова станет гибким дочерним элементом.

Пример:

const hiddenChild = document.querySelector('.hide-item');

hiddenChild.classList.remove('hide-item');

Другие вопросы по теме