Для подобных вещей существуют css grid. Самая популярная входит в состав css framework bootstrap.
Советую подключить его, можно не весь, а только grid, тогда задача решится так:
<div class="col-xs-4 col-md-2"></div>
<div class="col-xs-4 col-md-2"></div>
<div class="col-xs-4 col-md-2"></div>
<div class="col-xs-4 col-md-2"></div>
<div class="col-xs-4 col-md-2"></div>
<div class="col-xs-4 col-md-2"></div>
На маленьких экранах блоки будут 4/12 ширины родителя (3 в ряд), на средних и больше 2/12 (6 в ряд)
Подробнее тут:
getbootstrap.com/css/#grid
Ну или через медиа запросы самому написать себе грид. В любом случае советую глянуть как это реализовано в getbootstrap.