Имея страницу, на которой мы требуем, чтобы, если ширина контейнера меньше размера представления, измените 5 столбцов на 2 столбца и попробуйте ниже:
.list {
background-color: grey;
display: grid;
grid-gap: 4px;
grid-template-columns: repeat(5, 1fr);
container-type: inline-size;
}
.letter {
display: grid;
grid-auto-flow: row;
justify-items: center;
align-content: center;
color: white;
}
@container (max-width:500px) {
.list {
grid-template-columns: repeat(2, 1fr);
}
.letter {
background-color: green;
}
}<div class = "list">
<div class = "letter">A</div>
<div class = "letter">B</div>
<div class = "letter">C</div>
<div class = "letter">D</div>
<div class = "letter">E</div>
</div>Но это не работает; проверено в Chrome и Firefox в Ubuntu.
Йепперс — codepen.io/Paulie-D/pen/WNBZJQv






Я думаю, что у тебя один контейнер «вышел».
В этом фрагменте представлена оболочка, которая настроена как «контейнер», поэтому элемент .list имеет контейнер для тестирования.
.wrapper {
container-type: inline-size;
}
.list {
background-color: grey;
display: grid;
grid-gap: 4px;
grid-template-columns: repeat(5, 1fr);
}
.letter {
display: grid;
grid-auto-flow: row;
justify-items: center;
align-content: center;
color: white;
}
@container (max-width:500px) {
.list {
grid-template-columns: repeat(2, 1fr);
}
.letter {
background-color: green;
}
}<div class = "wrapper">
<div class = "list">
<div class = "letter">A</div>
<div class = "letter">B</div>
<div class = "letter">C</div>
<div class = "letter">D</div>
<div class = "letter">E</div>
</div>
</div>ой. это работает. но когда я пишу (max-width>=500px) ничего не работает. is >= не является допустимым выражением для запросов контейнера?
Это так, но я думаю, что ваша проблема в max-width, поскольку (width >= 500px) работает нормально
Что вам нужно сделать, так это изменить @container на @media, остальной код в порядке.
.list {
background-color: grey;
display: grid;
grid-gap: 4px;
grid-template-columns: repeat(5, 1fr);
container-type: inline-size;
}
.letter {
display: grid;
grid-auto-flow: row;
justify-items: center;
align-content: center;
color: white;
}
@media (max-width:500px) {
.list {
grid-template-columns: 1fr 1fr;
}
.letter {
background-color: green;
}
} <div class = "list">
<div class = "letter">A</div>
<div class = "letter">B</div>
<div class = "letter">C</div>
<div class = "letter">D</div>
<div class = "letter">E</div>
</div>@container не заменяет медиа, они относятся к разным вещам. См. developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/… , где есть пример, подчеркивающий разницу.
Я могу ошибаться, но я думаю, что на самом деле вы не можете стилизовать контейнер только с помощью
@containerэтого дочернего элемента. Контейнерный запрос будет применять стили к элементам в зависимости от размера ближайшего предка с контекстом включения.