Как сказал Аарон в своем ответе, вам не нужен ни начальный загрузчик, ни такое количество разметки, чтобы достичь этого. Вы можете использовать flexbox с flex-base и flex-wrap.
.container{
display:flex;
justify-content:space-between;
flex-wrap:wrap;
}
.container li{
flex-basis:33.33%;
}
@media screen and (min-width:700px){
.container{
flex-wrap:nowrap;
}
}
<ul class="container">
<li>
<img src="images/brush.svg" class="brush" alt="brush">
<p class="brush">Graphic Design</p>
</li>
<li>
<img src="images/wand.svg" class="wand" alt="wand">
<p class="wand">UI Design</p>
</li>
<li>
<img src="images/code.svg" class="code2" alt="code">
<p class="code">Front-end Dev</p>
</li>
<li>
<img src="images/settings.svg" class="settings" alt="settings">
<p class="settings">Back-end Dev</p>
</li>
<li>
<img src="images/database.svg" class="database" alt="databases">
<p class="database">Databases</p>
</li>
<li>
<img src="images/mobile.svg" class="mobile" alt="mobile">
<p class="mobile">Mobile Devices</p>
</li>
</ul>
Или, если вас не беспокоит IE 11 Совместимость , вы также можете использовать CSS-сетку с методом авто-подгонки, так что вы полностью избавитесь от необходимости медиазапросов.
.container{
display:grid;
grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) )
}
/*
repeat is the css gread method for repeating columns or rows,
auto-fit will look for the available space,
min-max is the CSS Grid method for deciding a minimum and maxium size for either columns or rows
fr is the CSS Grid measure unit for available space in the grid container
*/
<ul class="container">
<li>
<img src="images/brush.svg" class="brush" alt="brush">
<p class="brush">Graphic Design</p>
</li>
<li>
<img src="images/wand.svg" class="wand" alt="wand">
<p class="wand">UI Design</p>
</li>
<li>
<img src="images/code.svg" class="code2" alt="code">
<p class="code">Front-end Dev</p>
</li>
<li>
<img src="images/settings.svg" class="settings" alt="settings">
<p class="settings">Back-end Dev</p>
</li>
<li>
<img src="images/database.svg" class="database" alt="databases">
<p class="database">Databases</p>
</li>
<li>
<img src="images/mobile.svg" class="mobile" alt="mobile">
<p class="mobile">Mobile Devices</p>
</li>
</ul>
Если вы действительно хотите контролировать в своей CSS-таблице то, как макет выглядит при разных разрешениях, вы можете вручную указать столбцы шаблона, используя единицу измерения fr. Как это:
.container{
display:grid;
grid-template-columns: 1fr 1fr 1fr /* three equal columns that uses all the available space */
}
@media screen and (min-width:700px){
.container{
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr /* six equal columns that uses all the available space */
}
}
<ul class="container">
<li>
<img src="images/brush.svg" class="brush" alt="brush">
<p class="brush">Graphic Design</p>
</li>
<li>
<img src="images/wand.svg" class="wand" alt="wand">
<p class="wand">UI Design</p>
</li>
<li>
<img src="images/code.svg" class="code2" alt="code">
<p class="code">Front-end Dev</p>
</li>
<li>
<img src="images/settings.svg" class="settings" alt="settings">
<p class="settings">Back-end Dev</p>
</li>
<li>
<img src="images/database.svg" class="database" alt="databases">
<p class="database">Databases</p>
</li>
<li>
<img src="images/mobile.svg" class="mobile" alt="mobile">
<p class="mobile">Mobile Devices</p>
</li>
</ul>
По возможности я рекомендую использовать CSS Grid, так как он более семантический и более простой в обслуживании.