Create justified image layouts like Google Images and Flickr.
- No dependencies
- 12kb (without gZip)
- CSS Animations
If you're not using NPM then you can download the files from this repo.
npm install bricks-layout --save-dev
<div class="bricks">
<img src="path/to/image.jpg">
<img src="path/to/image.jpg">
<img src="path/to/image.jpg">
<img src="path/to/image.jpg">
</div>
<link rel="stylesheet" href="build/css/bricks.min.css">
<script src="build/js/bricks.min.js"></script>
<script>
// Select Bricks element in DOM
var bricksElement = document.querySelector('.bricks');
// Create instance of Bricks
var bricksInstance = new Bricks(bricksElement);
</script>
// Require Bricks module
var Bricks = require('bricks');
// Select Bricks element in DOM
var bricksElement = document.querySelector('.bricks');
// Create instance of Bricks
var bricksInstance = new Bricks(bricksElement);
Name | Type | Default | Description |
---|---|---|---|
afterLoad | function | A callback function that is fired after the images are loaded and resized. | |
animation | boolean | true | If true, the images will animate after they load. |
animationDelay | number | 50 | In milliseconds, the delay between the animation of each image. |
beforeLoad | function | A callback function that is fired before the images are loaded or resized. | |
imageClassName | string | bricks__img | The class name that tells Bricks that the image is part of the layout. |
imageContainer | string | div | The element that the images will be wrapped in, e.g: 'div', or 'span'. |
imageContainerClassName | string | bricks__img | The class name of the element that the images will be wrapped. |
imageLoadedClassName | string | bricks__img--loaded | The class name applied to the image when it is finished loading. |
margin | number | 0 | The horizontal space between each image. |
maxHeight | number | 250 | The maximum height for a row of images. |
This method is for adding more images to the Bricks element. You can fire this event on click, scroll, resize, etc...
Argument Name | Type | Description |
---|---|---|
images | array | An array of strings. The strings should be the `src` attribute for the image. |
Example:
// Array of image paths
var imageSources = ['images/1.jpg', 'images/2.jpg', 'images/3.jpg'];
// Call method on Bricks instance
bricksInstance.addNewImages(imageSources);
This method is for removing images from the Bricks element. You can fire this event on click, scroll, resize, etc...
Argument Name | Type | Description |
---|---|---|
images | array | An array of image nodes. |
Example:
// Nodelist of images
var imageNodes = document.querySelectorAll('.bricks__img');
// Array of images to remove
var imagesToRemove = [imageNodes[2], imageNodes[5], imageNodes[9]];
// Call method on Bricks instance
bricksInstance.removeImages(imagesToRemove);
This method reloads all of the images in the Bricks element.
Note: The images are fully reloading/downloading, not just re-animating.
Example:
bricksInstance.reloadImages();
The animation that plays after an image loads is easily customizable in the bricks.css
or bricks.scss
file. Simply set the starting point properties on the bricks__img
class and define the end point properties in the bricks-animtion
keyframe animation.
If you want the images to be links you can set the imageContainer
option to 'a'
. In your markup you can specify a data-href
attribute on the image and that will be used as the href
value in the anchor tag.
<img class="bricks__img" data-href="https://somewebsite.io" src="https://unsplash.it/520/350?image=888" />
- Chrome
- Firefox
- Safari
- IE 10+
- Edge
- ptgamr for creating the google-image-layout algorithm
- David Desandro for ImagesLoaded
- Unsplash for the awesome images
MIT © 2016 Arjan Jassal