Интересный способ преобразования колонок в строки с помощью 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>
Результат (поизменяйте ширину браузера)