Skip to content
+

Masonry

Masonry lays out contents of varying dimensions as blocks of the same width and different height with configurable gaps.

Masonry maintains a list of content blocks with a consistent width but different height. The contents are ordered by row. If a row is already filled with the specified number of columns, the next item starts another row, and it is added to the shortest column in order to optimize the use of space.

Basic masonry

A simple example of a Masonry. Masonry is a container for one or more items. It can receive any element including <div /> and <img />.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Press Enter to start editing

Image masonry

This example demonstrates the use of Masonry for images. Masonry orders its children by row. If you'd like to order images by column, check out ImageList.

1
Fern
2
Snacks
3
Mushrooms
4
Tower
5
Sea star
6
Honey
7
Basketball
8
Breakfast
9
Tree
10
Burger
11
Camera
12
Coffee
13
Camping Car
14
Hats
15
Tomato basil
16
Mountain
17
Bike

Items with variable height

This example demonstrates the use of Masonry for items with variable height. Items can move to other columns in order to abide by the rule that items are always added to the shortest column and hence optimize the use of space.

Contents
Contents
Contents
Contents
Contents
Contents
Contents
Contents
Contents
Contents
Press Enter to start editing

Columns

This example demonstrates the use of the columns to configure the number of columns of a Masonry.

1
2
3
4
5
6
7
8
9
10
Press Enter to start editing

columns accepts responsive values:

1
2
3
4
5
6
7
8
9
10
Press Enter to start editing

Spacing

This example demonstrates the use of the spacing to configure the spacing between items. It is important to note that the value provided to the spacing prop is multiplied by the theme's spacing field.

1
2
3
4
5
6
7
8
9
10
Press Enter to start editing

spacing accepts responsive values:

1
2
3
4
5
6
7
8
9
10
Press Enter to start editing

Sequential

This example demonstrates the use of the sequential to configure the sequential order. With sequential enabled, items are added in order from left to right rather than adding to the shortest column.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Press Enter to start editing

Server-side rendering

This example demonstrates the use of the defaultHeight, defaultColumns and defaultSpacing, which are used to support server-side rendering.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Press Enter to start editing

API

See the documentation below for a complete reference to all of the props and classes available to the components mentioned here.