У меня действительно большая проблема с гибкими коробками, и я не могу найти на это ответа. Ниже я помещу код. Проблема в том, что черный фон не расширяется вправо вместе с содержимым. Вы знаете, как это исправить? Как заставить контейнер расширяться в зависимости от количества столбцов содержимого?
Цель состоит в том, чтобы достичь чего-то вроде этого: https://imgur.com/a/4ETPJS6
.categories li ul {
list-style: none;
display: flex;
flex-direction: column;
flex-wrap: wrap;
position: absolute;
width: auto;
padding-left: 0;
background-color: black;
color: red;
max-height: 200px;
}
.categories li ul li {
margin-right: 20px;
}<ul class = "categories">
<li>
<a href = "#">Categories</a>
<ul>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
</ul>
</li>
</ul>Я имею в виду, что у второго столбца Aaa нет фона. У меня много названий категорий, и я хочу поставить их рядом. Но .categories> ul width находится только в первом столбце






Удалить стиль position: absolute;
.categories li ul {
list-style: none;
display: flex;
flex-direction: column;
flex-wrap: wrap;
width: auto;
padding-left: 0;
background-color: black;
color: red;
max-height: 200px;
}
.categories li ul li {
margin-right: 20px;
}<html>
<body>
<ul class = "categories">
<li>
<a href = "#">AAAAAAAAAA</a>
<ul>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
</ul>
</li>
</ul>
</body>
</html>но список теперь имеет 100% ширину. Я хочу, чтобы его ширина была равна количеству столбцов
Я боюсь, что это работает именно так, и не уверен, что этого можно добиться без значительного изменения ваших стилей. Загляну в него утром, если до тех пор не найдешь ответов.
Похоже, ваш результат может быть получен, если вы просто измените селекторы для своего CSS.
.categories li ul {
list-style: none;
display: flex;
flex-direction: column;
flex-wrap: wrap;
position: absolute;
width: auto;
padding-left: 0;
max-height: 200px;
}
.categories li ul li {
margin-right: 20px;
}
.categories ul > li {
background-color: black;
color: red;
}<html>
<body>
<ul class = "categories">
<li>
<a href = "#">AAAAAAAAAA</a>
<ul>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
</ul>
</li>
</ul>
</body>
</html>Но все еще остается много белого пространства. Я хочу, чтобы это выглядело вот так. imgur.com/a/4ETPJS6
Это то, что вы ищете?
Примечание: вам нужно вырастить вашего последнего ребенка в столбце, чтобы черный фон был на всю высоту.
.categories {
display: flex;
}
.categories > li {
display: flex;
flex-direction: column;
}
.categories li ul {
flex: 1;
display: flex;
flex-direction: column;
flex-wrap: wrap;
padding-left: 0;
color: red;
max-height: 200px;
min-height: 200px;
list-style: none;
background-color: black;
}
.categories li ul li {
margin-right: 20px;
background-color: black;
}
.categories li ul li:last-child {
flex:1;
}<body>
<ul class = "categories">
<li>
<a href = "#">Categories</a>
<ul>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
<li>Aaa</li>
</ul>
</li>
</ul>
</body>Ах, да! Это идеально! большое спасибо! : D
Как вы хотите, чтобы это выглядело? Я не понимаю, что вы имеете в виду, читая свой вопрос.