I'm exploring CSS Grid to see if it can completely replace the need for responsive CSS media queries for my specific use case. I have the following grid container:
.gridContainer {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
padding: 0px 15px;
margin: 0 auto;
grid-row-gap: 20px;
}
The grid container holds three items that initially result in one row and three columns on larger screen sizes:
When I reduce the viewport width such that the three columns are below 250px each, I would like the grid layout to snap to a layout of three rows and one column:
As you reduce the viewport width, there is currently an interim layout where the third item wraps onto a row where it sits by itself, due to the auto-placement algorithm selected:
I would like to bypass this wrapping and only support the initial one-row, three-column layout and the final three-row, one-column layout. Is this possible with CSS Grid only and without the use of media queries?
You may use a mediaquerie and turn your container into a grid once a minimal width is reach : (code option taken since you gave so little infos)
basis example of the idea
div {
padding: 1em;
margin: 1em;
border: dotted tomato;
}
@media (min-width: 780px) {
body {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
padding: 0px 15px;
margin: 0 auto;
grid-row-gap: 20px;
}
}
<div>lorem</div>
<div>lorem</div>
<div>lorem</div>
You can play the snippet in full page mode and resize your browser to check out the behavior.