Скрыть блок div через css

308
09 февраля 2018, 18:56

Здравствуйте, есть несколько дивов, формируются через php, в итоге получается такой код:

<div id="order1"> Текст для показа
<div id="order_item1">Текст который надо скрыть</div>
</div>
<div id="order2"> Текст для показа
<div id="order_item2">Текст который надо скрыть</div>
</div>

Хочется, чтобы по умолчанию дивы order_item были скрыты, а при нажатии на ссылку "Текст для показа" отображались. Хочется это все сделать на css, знаю что там есть атрибут display:none, но как сделать ссылку, при нажатии которой, свойство бы менялось, а тем более когда несколько блоков, не могу понять.

Answer 1

Кстати, если использовать display:none то плавности в появление и исчезновении не будет.

/*хватаем элемент order*/ 
const order = document.getElementsByClassName('order'); 
/*хватаем элемент order_item*/ 
const order_item = document.getElementsByClassName('order_item'); 
 
/* и тут прокручиваем в цикле order*/ 
for (let i = 0; i < order.length; i++) { 
  // и тут событие срабатывает  которое добавляет и удаляет класс 
  order[i].addEventListener('click', function() { 
    order_item[i].classList.toggle('active'); 
  }) 
}
.order_item { 
  opacity: 0; 
  transition: opacity .3s; 
} 
 
.order_item.active { 
  opacity: 1; 
  transition: opacity .3s; 
}
<div class="order" id="order1"> Текст для показа 
  <div class="order_item" id="order_item1">Текст который надо скрыть</div> 
</div> 
 
<div class="order" id="order2"> Текст для показа 
  <div class="order_item" id="order_item2">Текст который надо скрыть</div> 
</div>

Answer 2

Пример с двумя блоками без JS

/* скрываем чекбоксы и блоки с содержанием */ 
 
.hide, 
.hide+label~div { 
  display: none; 
} 
 
 
/* вид текста label */ 
 
.hide+label, 
.hide:checked+label { 
  padding: 0; 
  color: green; 
  cursor: pointer; 
  border-bottom: 1px dotted green; 
} 
 
 
/* вид текста label при активном переключателе */ 
 
.hide:checked+label { 
  color: red; 
  border-bottom: 0; 
} 
 
 
/* когда чекбокс активен показываем блоки с содержанием  */ 
 
.hide:checked+label+div { 
  display: block; 
  background: #efefef; 
  -moz-box-shadow: inset 3px 3px 10px #7d8e8f; 
  -webkit-box-shadow: inset 3px 3px 10px #7d8e8f; 
  box-shadow: inset 3px 3px 10px #7d8e8f; 
  padding: 10px; 
}
<input class="hide" id="hd-1" type="checkbox"> 
<label for="hd-1">Нажмите здесь, чтобы открыть!</label> 
<div>Скрытое содержание......</div> 
<input class="hide" id="hd-2" type="checkbox"> 
<label for="hd-2">Нажмите здесь, чтобы прочитать больше!</label> 
<div>Скрытое содержание...</div>

READ ALSO
css.js. Анимация появления блока с изменением положения соседних элементов

css.js. Анимация появления блока с изменением положения соседних элементов

Заставить блок (#visible) появится таким образом, чтобы он подвинул верхний блок с текстом в вверх, а нижний блок в низ и сам отрисовался аналогичным...

271
Массовый update в mysql в один запрос

Массовый update в mysql в один запрос

Есть проблемаУ меня в цикле идет обновление 30к+ строк

302
исправления запроса mysql

исправления запроса mysql

каак можно исправить данный запрос

207
Отличия в структуре хранения данных в mysql и NoSql?

Отличия в структуре хранения данных в mysql и NoSql?

Есть таблица Area у не есть множество EventВ mysql это выглядит как 2 таблицы: Area -> Event, 1 -> много

220