HTML-CSS: Masonry Layout
HTML-CSS : Exercise-40 with Solution
Using HTML, CSS creates a masonry-style layout that is especially useful when working with images.
- Create a masonry-style layout that consists of "bricks" that fall into each other with either a fixed width (vertical layout) or a fixed height (horizontal layout), forming a perfect fit. Especially useful when working with images.
- Define .masonry-container This is the container for the masonry layout and .masonry-columns, an inner container in which .masonry-brick elements will be placed.
- Apply display: block to .masonry-brick elements to allow the layout to flow properly.
- Use the :first-child pseudo-element selector to apply a different margin for the first element to account for its positioning.
- Use CSS variables and media queries for greater flexibility and responsiveness.
HTML Code:
<!--License: https://bit.ly/3GjrtVF-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Using HTML, CSS creates a masonry-style layout that is especially useful when working with images</title>
</head>
<body>
<div class="masonry-container">
<div class="masonry-columns">
<img
class="masonry-brick"
src="/html-css-exercise/html-css-practical-exercises/flower-10.jpeg"
alt="An image"
/>
<img
class="masonry-brick"
src="/html-css-exercise/html-css-practical-exercises/flower-11.jpeg"
alt="Another image"
/>
<img
class="masonry-brick"
src="/html-css-exercise/html-css-practical-exercises/flower-12.jpeg"
alt="Another image"
/>
<img
class="masonry-brick"
src="/html-css-exercise/html-css-practical-exercises/flower-13.jpeg"
alt="One more image"
/>
<img
class="masonry-brick"
src="/html-css-exercise/html-css-practical-exercises/flower-14.jpeg"
alt="And another one"
/>
<img
class="masonry-brick"
src="/html-css-exercise/html-css-practical-exercises/flower-15.jpeg"
alt="Last one"
/>
</div>
</div>
</body>
</html>
CSS Code:
/* Container */
.masonry-container {
--column-count-small: 1;
--column-count-medium: 2;
--column-count-large: 3;
--column-gap: 0.125rem;
padding: var(--column-gap);
}
/* Columns */
.masonry-columns {
column-gap: var(--column-gap);
column-count: var(--column-count-small);
column-width: calc(1 / var(--column-count-small) * 100%);
}
@media only screen and (min-width: 640px) {
.masonry-columns {
column-count: var(--column-count-medium);
column-width: calc(1 / var(--column-count-medium) * 100%);
}
}
@media only screen and (min-width: 800px) {
.masonry-columns {
column-count: var(--column-count-large);
column-width: calc(1 / var(--column-count-large) * 100%);
}
}
/* Bricks */
.masonry-brick {
width: 100%;
height: auto;
margin: var(--column-gap) 0;
display: block;
}
.masonry-brick:first-child {
margin: 0 0 var(--column-gap);
}
HTML-CSS Editor:
See the Pen html-css-practical-exercises by w3resource (@w3resource) on CodePen.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
HTML-CSS: Tips of the Day
How to get CSS to select ID that begins with a string ?
[id^=product]
^= indicates "starts with". Conversely, $= indicates "ends with".
The symbols are actually borrowed from Regex syntax, where ^ and $ mean "start of string" and "end of string" respectively.
Ref: https://bit.ly/3rSZ2t7
- New Content published on w3resource:
- HTML-CSS Practical: Exercises, Practice, Solution
- Java Regular Expression: Exercises, Practice, Solution
- Scala Programming Exercises, Practice, Solution
- Python Itertools exercises
- Python Numpy exercises
- Python GeoPy Package exercises
- Python Pandas exercises
- Python nltk exercises
- Python BeautifulSoup exercises
- Form Template
- Composer - PHP Package Manager
- PHPUnit - PHP Testing
- Laravel - PHP Framework
- Angular - JavaScript Framework
- Vue - JavaScript Framework
- Jest - JavaScript Testing Framework