Optimizing how space is used on a screen is a key component of good web design, and especially of responsive design.
There are a number of ways to approach this kind of challenge, and one of the most popular is auto-arrangement of elements within a parent container. It's efficient, and when well-executed, creates a layout that's both visually appealing and functionally optimal.
If you're designing a responsive site, you'll almost certainly find the need to rearrange content in a dynamic fashion, based on the screen size of the user's device. Auto-arranging content makes sense, as it minimizes the time spent customizing breakpoints for each page and each element.
Sites with constantly-changing content (like blogs or online stores) can especially benefit from auto-arrangement. After all, do you really want to have to go into the code for your client's site and adjust the breakpoints and layout if they suddenly decide to start writing longer or shorter blog posts?
Doing all this from scratch is time-intensive and beyond the abilities of most designers who aren't also developers. Instead, it makes sense to use a pre-existing plugin or framework.
JavaScript (including jQuery and other libraries) is the most common way of creating this kind of layout, most likely because of its wide cross-compatibility. This is how existing efforts like vGrid, Wookmark, and Masonry work.
Freetile.js is a recent jQuery plugin that enables this kind of dynamic, organized, responsive layout. It's been used as the engine behind Assemblage and Assemblage Plus for nearly two years, and is now finally available as an independent open source project.
It's different from existing efforts in this space for a few reasons. It allows any size elements to be used without the need for a fixed-size column grid. This frees you from having to specify a column width appropriate to your elements. And you can customize the algorithm that evaluates possible insertion positions for each elements, allowing you to express preferences like alignment and proximity.
It has a smart animation routine that makes it easy to distinguish between which elements should be animated and which should not. Specifying the animation within the code is easy, too.
Usage of Freetile.js is simple to use. Even if you're not proficient in JavaScript, you should be able to figure out its usage pretty quickly.
Freetile.js is licensed under the BSD License, and is available via GitHub.
Have you used Freetile.js? What did you build? Share your experiences in the comments.