Skip to content

sibiraj-s/react-layout-masonry

Repository files navigation

React Layout Masonry

React Layout Masonry is a flexible and customizable React component for creating dynamic and fixed/responsive masonry layouts.

Tests NPM

Installation

You can install React Layout Masonry using npm, pnpm or yarn:

npm install react-layout-masonry

or

pnpm install react-layout-masonry

or

yarn add react-layout-masonry

Usage

Fixed Columns Layout

Here's an example of how to use React Layout Masonry with a fixed number of columns in your React application:

import Masonry from 'react-layout-masonry';

const FixedColumnsMasonry = () => {
  return (
    <Masonry
      columns={3}
      gap={16}
    >
      {items.map((item) => {
        return <Item {...item} />;
      })}
    </Masonry>
  );
};

export default FixedColumnsMasonry;

Responsive Columns Layout

Here's an example of how to use React Layout Masonry with responsive columns in your React application:

import Masonry from 'react-layout-masonry';

const ResponsiveColumnsMasonry = () => {
  return (
    <Masonry
      columns={{ 640: 1, 768: 2, 1024: 3, 1280: 5 }}
      gap={16}
    >
      {items.map((item) => {
        return <Item {...item} />;
      })}
    </Masonry>
  );
};

export default ResponsiveColumnsMasonry;

or use the array syntax

<Masonry columns={[1, undefined, undefined, 3]} />

this will be converted to

{
  "640": 1,
  "1280": 3
}

The array's order corresponds to the default breakpoints, which are 640, 786, 1024, 1280, 1536.

Column Props

The columnProps prop allows you to apply additional props to the container of each column. Here's an example:

<Masonry
  columns={3}
  gap={16}
  columnProps={{
    className: 'custom-column',
    style: { backgroundColor: 'lightgray' },
  }}
>
  {/* ... */}
</Masonry>

Props

  • columns (number or object, required): The number of columns in the masonry layout, or an object with breakpoints and corresponding column counts.
  • gap (number, optional): The spacing between columns and rows in pixels. Defaults to 0.
  • columnProps (object, optional): Additional props to be applied to each column, such as className for styling.

Examples

For examples, usage and customization options, please refer to the docs directory in this repository.

Contributing

If you encounter any issues or have questions, please open an issue on our GitHub repository. Make sure to create an issue or discussion first before raising a PR

License

React Layout Masonry is open-source software licensed under the MIT License.