Skip to content

Repository files navigation

Brique.js

Create cascading layout grids like Pinterest with the power of CSS Grid Layout.

Documentation

Brique example

Getting Started

  1. Install
  2. Instantiate
  3. HTML markup example
  4. Parameters
  5. Properties
  6. Methods
  7. Responsive grid

Install

$ npm i brique --save

Instantiate

TypeScript

import{Brique}from'./node_modules/brique/lib';constrefGrid=document.getElementById('grid');newBrique(refGrid);

JavaScript ES6

HTML script tag requires the type="module" attribute.

<scripttype="module" src="scripts/main.js"></script>

Create the grid in the JavaScript file (scripts/main.js) and import the esm version of the library (index.esm.js).

import{Brique}from'./node_modules/brique/lib/index.esm.js';constrefGrid=document.getElementById('grid');newBrique(refGrid);

HTML markup example

<divid="grid"><div><h2>Box 1</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></div><div><h2>Box 2</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut laboret.</p></div><div><h2>Box 3</h2></div><div><h2>Box 4</h2><p>Lorem ipsum dolor sit amet.</p></div><div><h2>Box 5</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.</p></div></div>

Parameters

3 parameters can be passed to the Brique class.

newBrique(gridElement,options,observeGridResize);

gridElement: HTMLElement

Target HTML element which is the container for grid items.

options: BriqueOptions (Optional)

PropertyTypeRequiredDescription
columnsnumbertrueNumber of columns
columnGapstringfalseSpacing between columns
rowGapstringfalseSpacing between row

Example

constrefGrid=document.getElementById('grid');constoptions={columns: 4,rowGap: '24px',columnGap: '16px',};newBrique(refGrid,options);

observeGridResize: boolean (Optional)

The default value for this parameter is true.

If the value is true, the grid items will be updated when the viewport is resized.

If the value is false, the grid will never be updated when the viewport is resized.

Properties

Default options

Static property which returns the options defined by default in the Brique class.

Brique.DEFAULT_OPTIONS;

itemElements: HTMLElement[]

Reference array of HTML elements of all grid items.

Methods

update()

Update the rendering of the entire grid on demand.

briqueGrid.update();

updateItems()

Update the rendering of the grid items on demand.

briqueGrid.updateItems();

updateOnResize()

Update the dimension of grid items when the grid element is resized.

constrefGrid=document.getElementById('grid');constbriqueGrid=newBrique(refGrid);briqueGrid.updateOnResize();

stopUpdateOnResize()

Stop update the dimension of grid items when the grid element is resized.

briqueGrid.stopUpdateOnResize();

getOptions(): BriqueOptions

Return current options object.

briqueGrid.getOptions();// output: { columns: 3, rowGap: '32px', columnGap: '32px'}

setOptions(options)

Change all properties of options object.

briqueGrid.setOptions({columns: 5});

updateOptions(updatedOptions)

Updates only changed properties.

briqueGrid.updateOptions({columns: 5});

Can be used to create a responsive grid.

destroy()

Removes all events listened to on the HTML elements handled by the Brique class.

The destroy() method must be called when the grid is removed from HTML.

Responsive grid

Update options object on media queries change.

constrefGrid=document.getElementById('grid');constmediaQueryMobile=window.matchMedia('(max-width: 767px)');constgetColumnsNumber=()=>mediaQueryMobile.matches ? 2 : 3;constbriqueGrid=newBrique(refGrid,{columns: getColumnsNumber(),columnGap: '32px',rowGap: '32px',});mediaQueryMobile.addEventListener('change',()=>{briqueGrid.updateOptions({columns: getColumnsNumber(),});});

About

Creating cascading layout grids like Pinterest

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages