#html #css #alignment #media-queries #multiple-columns
#HTML #css — код #выравнивание #медиа-запросы #многоколоночный
Вопрос:
У меня есть приложение, которое отображает разные разделы, и я хочу оформить его так, чтобы при изменении размера окна столбцы добавлялись и удалялись, а содержимое динамически упорядочивалось внутри столбцов. Я использую медиа-запрос для добавления столбца в основной контейнер каждые 400 пикселей, а ширина каждого div равна 400 пикселей. Однако.когда есть два столбца и три раздела, переполнение заканчивается в самом правом столбце. Как мне сделать так, чтобы мои столбцы заполнялись слева направо?
@media (max-width: 1199px) and (min-width: 800px) {
.main-container {
column-count: 2;
padding: 15px;
margin: 15px;
}
.item {
border: solid black 1px;
width: 400px;
-webkit-column-break-inside: avoid;
}
}
<section class="main-container">
<div class="item">
<h2>Title</h2>
<p>this is a paragrapgh</p>
</div>
<div class="item">
<h2>Title</h2>
<p>this is a paragrapgh</p>
</div>
<div class="item">
<h2>Title</h2>
<p>this is a paragrapgh</p>
</div>
</section>
Комментарии:
1. извините, я забыл добавить строку в css, которая остановила разделение div между двумя столбцами, и не смог понять, как сделать то, что вы делали раньше. Но я очень ценю, что вы отредактировали его для меня, и вы можете редактировать мои вопросы в любое время.
Ответ №1:
Вы можете использовать grid . И теперь всякий раз, когда будет свободное пространство размером 400 пикселей, он добавит новый столбец.
* {
box-sizing: border-box;
}
.main-container {
display: grid;
grid-template-columns: repeat(auto-fill, 400px);
grid-gap: /* Here you can add whatever spacing between items you want */ ;
padding: 15px;
margin: 15px;
}
.main-container > .item {
border: solid black 1px;
width: 400px;
}
<section class="main-container">
<div class="item">
<h2>Title</h2>
<p>this is a paragrapgh</p>
</div>
<div class="item">
<h2>Title</h2>
<p>this is a paragrapgh</p>
</div>
<div class="item">
<h2>Title</h2>
<p>this is a paragrapgh</p>
</div>
</section>
Комментарии:
1. разрыв , а не болтовня .
2. В любом случае, ваш фрагмент не работает без HTML.
3. @AbsoluteBeginner да, tnx за редактирование, неправильно написано «пробел» 🙂
Ответ №2:
Для этого вы можете использовать сетку отображения, используя автозаполнение для добавления новых столбцов, когда окно имеет достаточный размер, и определяя размер внутри функции minmax.
.main-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(0, 400px));
}