CSS Grid Auto Rows is a powerful tool for creating responsive and flexible layouts. It allows you to automatically generate rows based on the content.
To use Auto Rows, you simply need to set the grid-auto-rows property to a value like auto or minmax(0, auto). This tells the grid to automatically create rows as needed.
Grid Auto Rows is particularly useful for creating layouts with varying content heights. For example, if you have a container with a mix of short and long paragraphs, Auto Rows will create rows that adapt to the height of each paragraph.
CSS Grid Basics
CSS Grid Basics are the foundation of working with CSS Grid, and understanding them is crucial for mastering auto rows.
Grid containers are the basic building blocks of CSS Grid, and they define the scope of the grid layout.
A grid container is defined by applying the display property and setting it to grid or inline-grid.
Grid items are the elements that make up the grid layout, and they can be any HTML element.
Grid items can span multiple grid cells by using the grid-column and grid-row properties.
The grid-template-columns property specifies the number and size of columns in the grid.
The grid-template-rows property specifies the number and size of rows in the grid.
In CSS Grid, auto rows are created automatically by the browser when grid items are placed in a grid container.
Auto Rows Functions
Grid Auto Rows Functions are incredibly useful for creating flexible and responsive layouts.
One of the most useful functions is the fit-content function, which allows a row to be as tall as needed to fit its content, but will not exceed a specified maximum size.
For example, fit-content(200px) means the row will be as tall as needed to fit the content but will not exceed 200 pixels.
Auto Rows Values
To size rows automatically, you can use the auto value, which allows the row to size itself based on its content and the available space in the grid container.
You can also specify a length value, such as 10px or 20em, to set the size of implicit rows. This will make all the implicitly created rows have the specified size.
Percentage values can also be used to set the size of implicit rows, with values like 10% or 20% assigning size as a percentage of the container's size.
The max-content value sets the row height to the maximum size needed to fit its content, without any truncation or overflow.
The min-content value sets the row height to the minimum size needed to fit the content, ensuring it's fully visible and not cut off.
The auto value can also be used to calculate the maximum content contribution of the grid items occupying the grid track, which is represented by the max-content value.
The auto value can also be used to calculate the largest min-content contribution of the grid items occupying the grid track, which is represented by the min-content value.
The minmax function can be used to define a size range, with values like minmax(100px, 200px) setting a size range greater than or equal to 100px and less than or equal to 200px.
CSS Grid Auto Rows
CSS Grid Auto Rows is a powerful property that allows you to control the size of rows that don't have an explicit size set by grid-template-rows.
You can use the grid-auto-rows property to set the size of rows that are created automatically by the grid's auto-placement algorithm. This is useful when you don't know how many rows will be needed, such as in a gallery with an unknown number of items.
The auto value allows the grid item to size itself based on its content and the available space in the grid container. This is shown in Example 4, where the auto value is used to allow the grid item to size itself based on its content.
Implicit rows are created when there are more grid items than cells, and the auto-placement algorithm creates additional rows or columns to hold the extra items. By default, the auto-placement algorithm creates row tracks to hold extra items, but you can use grid-auto-rows to give them a specific size, as shown in Example 3.
You can also use percentage values, such as 10% or 20%, to set the size of implicit rows, as shown in Example 5. This is useful when you want to create a layout with a specific proportion of rows to columns.
By setting the size of implicit rows, you can create complex layouts with multiple rows and columns, while still maintaining control over the size and spacing of each element.
Defined by Template-Areas
When you define rows using grid-template-areas, they can have no explicit size set by grid-template-rows. This means the row's size will be auto if it doesn't have any content.
The first row in a grid can be set to an explicit size, like 200px, but if the last row doesn't have an explicit size, it will be set to auto. If there's no content in that row, auto is essentially zero size.
Grid-auto-rows can control the size of the last row, even if it's not explicitly set. If you add grid-auto-rows to a grid with the last row set to auto, you can choose its size. For example, setting the last row to 150px will give it that exact size.
In some cases, like a gallery with an unknown number of items, you can't set the size of the rows explicitly because you don't know how many rows will be needed. That's where grid-auto-rows comes in, allowing you to set the size of auto-generated rows.
Items Than Cells
If you have more grid items than cells, CSS Grid creates implicit rows to hold the extra items. These implicit rows are sized automatically based on their content.
Implicit rows are a lifesaver when you have an overflow problem, like when you have more HTML elements than defined rows. CSS Grid's auto-placement algorithm creates additional rows or columns to hold the extra items, called implicit tracks.
The default behavior is to create row tracks to hold extra items, so your grid can hold everything, no matter how many items you add. However, you can control the size of these implicit rows by using the grid-auto-rows property.
For example, if you size those implicit grid rows to 150px, they will all have their size set to 150px, no matter how many implicit rows get created. This is super useful for keeping your grid layout consistent.
Flex
Flex is a non-negative value expressed in fr units that allows you to create flexible grid tracks by specifying the size of a track as a fraction of the available space in the grid container.
By using flex values, you can create a more responsive grid that adapts to changes in height. For example, if you have a grid container that's 900px tall and three implicit rows, you can assign a fixed height of 300px to the first row, and 1fr to the second row.
The second row will take up one fraction of the remaining available space, which is 600px (900px minus 300px). This means the second row will be 200px tall, leaving 400px of available space.
In this case, the second row gets one fraction of the remaining space, and the third row gets two fractions. This means the third row will take up twice the height of the second row, which is 400px.
Heading
The grid-auto-rows property can be set to various values to control the size of implicit rows in a grid container.
You can specify the size in length units, such as 10px or 20em, and all implicit rows will be the specified size.
Percentage values like 10% or 20% can also be used to set the size of implicit rows, which will be a percentage of the size of the container.
The max-content value sets the height of the row to be as tall as the maximum content it contains, without any truncation or overflow.
The min-content value sets the row height to the minimum size needed to fit the content without overflowing, making it fully visible and not cut off.
The fit-content function allows you to set a row height that fits its content but within a specified maximum size, such as fit-content(200px).
The auto keyword behaves similarly to minmax(min-content,max-content) in most cases and can be used to set the size of implicit rows.
Auto track sizes can be stretched by the align-content and justify-content properties and will take up any remaining space in the grid container by default.
If all rows are set to auto, they will share equal space, but if a fractional unit like 1fr is used, the auto rows will only be as tall as their content and the 1fr row will take up the remaining space.
Sources
Featured Images: pexels.com