Как создать: расширенная сетка

Узнайте, как использовать CSS и JavaScript для создания расширяемой сетки.

Расширенная сетка

Нажмите на одну коробку, чтобы "расширить" её (100% ширины):

Коробка 1
Коробка 2
Коробка 3

Попробуйте сами

Создайте расширенную сетку

Шаг 1 - Добавьте HTML:

<!-- Сетка: три колонки -->
<div class="row">
  <div class="column" onclick="openTab('b1');" style="background:green;">Коробка 1</div>
  <div class="column" onclick="openTab('b2');" style="background:blue;">Коробка 2</div>
  <div class="column" onclick="openTab('b3');" style="background:red;">Коробка 3</div>
</div>
<!-- Расширенная сетка (по умолчанию скрыта) -->
<div id="b1" class="containerTab" style="display:none;background:green">
  Если вы хотите иметь возможность закрывать контейнер, добавьте кнопку закрытия
  <span onclick="this.parentElement.style.display='none'" class="closebtn">x</span>
  <h2>Коробка 1</h2>
  <p>Lorem ipsum..</p>
</div>
<div id="b2" class="containerTab" style="display:none;background:blue">
  <span onclick="this.parentElement.style.display='none'" class="closebtn">x</span>
  <h2>Коробка 2</h2>
  <p>Lorem ipsum..</p>
</div>
<div id="b3" class="containerTab" style="display:none;background:red">
  <span onclick="this.parentElement.style.display='none'" class="closebtn">x</span>
  <h2>Коробка 3</h2>
  <p>Lorem ipsum..</p>
</div>

Шаг 2 - Добавить CSS:

Создать три колонки:

/* Сетка: три одинаковых по ширине столбца, плавающие друг относительно друга */
.column {
  float: left;
  width: 33.33%;
  padding: 50px;
  text-align: center;
  font-size: 25px;
  cursor: pointer;
  color: white;
}
.containerTab {
  padding: 20px;
  color: white;
}
/* Удаление浮动 после колонок */
.row:after {
  content: "";
  display: table;
  clear: both;
}
/* Кнопка для закрытия в изображении */
.closebtn {
  float: right;
  color: white;
  font-size: 35px;
  cursor: pointer;
}

Шаг 3 - Добавить JavaScript:

// Скрыть все элементы с классом="containerTab", кроме тех, которые соответствуют кликабельным ячейкам сетки
function openTab(tabName) {
  var i, x;
  x = document.getElementsByClassName("containerTab");
  for (i = 0; i < x.length; i++) {
    x[i].style.display = "none";
  }
  document.getElementById(tabName).style.display = "block";
}

Попробуйте сами