The question asks for a way to achieve a masonry grid effect in CSS with elements of varying heights, where each element is the same width but the bottom element is always 50px below the top element. The user attempted to use floats and Flexbox but encountered issues.
A solution is to use CSS Grid Layout, which provides a powerful and flexible way to create grids. The following CSS code demonstrates how to achieve the desired effect:
grid-container { display: grid; /* Enables the grid layout */ grid-auto-rows: 50px; /* Defines the height of each row to 50px */ grid-gap: 10px; /* Sets the gap between the grid items */ grid-template-columns: repeat(auto-fill, minmax(30%, 1fr)); /* Defines the columns to have a minimum width of 30% */ } [short] { grid-row: span 1; /* Makes the element span only one row */ background-color: green; } [tall] { grid-row: span 2; /* Makes the element span two rows */ background-color: crimson; } [taller] { grid-row: span 3; /* Makes the element span three rows */ background-color: blue; } [tallest] { grid-row: span 4; /* Makes the element span four rows */ background-color: gray; }
The HTML code to use this layout is as follows:
<grid-container> <grid-item short></grid-item> <grid-item short></grid-item> <grid-item tall></grid-item> <grid-item tall></grid-item> <grid-item short></grid-item> <grid-item taller></grid-item> <grid-item short></grid-item> <grid-item tallest></grid-item> <grid-item tall></grid-item> <grid-item short></grid-item> <grid-item tallest></grid-item> <grid-item tall></grid-item> <grid-item taller></grid-item> <grid-item short></grid-item> <grid-item short></grid-item> <grid-item short></grid-item> <grid-item short></grid-item> <grid-item tall></grid-item> <grid-item short></grid-item> <grid-item taller></grid-item> <grid-item short></grid-item> <grid-item tall></grid-item> <grid-item short></grid-item> <grid-item tall></grid-item> <grid-item short></grid-item> <grid-item short></grid-item> <grid-item tallest></grid-item> <grid-item taller></grid-item> <grid-item short></grid-item> <grid-item tallest></grid-item> <grid-item tall></grid-item> <grid-item short></grid-item> </grid-container>
With this code, you can achieve a masonry grid effect with elements of varying heights, arranged in a consistent and responsive manner.
The above is the detailed content of How can I create a masonry grid with CSS Grid Layout where each element has the same width but the bottom element is always 50px below the top element?. For more information, please follow other related articles on the PHP Chinese website!