Интересный способ преобразования колонок в строки с помощью flexbox без медиа запросов.

Например, на широком экране отображаются три колонки, на узком — одна.

.container {
  margin: 1rem auto;
  max-width: 900px;
  flex-wrap: wrap;
  display: flex;
}

.cell {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 33%;
  flex-grow: 1;
  flex-basis: calc((40rem - 100%) * 999);
  padding: 0.5rem;
  color: #fff;
}

.cell:before {
  border-radius: 3px;
  background: #333;
  display: block;
  content: " ";
  height: 5rem;
}
<div class="container">
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
</div>

Результат (поизменяйте ширину браузера)