Created
March 26, 2012 18:15
-
-
Save desandro/2208329 to your computer and use it in GitHub Desktop.
Early jQuery Masonry
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function($){ | |
//Finding min and max values in array from http://snippets.dzone.com/posts/show/769 | |
Array.prototype.min = function(){ return Math.min.apply({},this) }; | |
Array.prototype.max = function(){ return Math.max.apply({},this) }; | |
$.fn.masonry = function() { | |
this.each(function() { | |
var wall = $(this); | |
if ( wall.children().length > 0 ) { // check if the element has anything in it | |
if( wall.children('.masonryWrap').length == 0 ) { // checks if the masonryWrap div is already there | |
wall.wrapInner('<div class=\"masonryWrap\"></div>'); | |
} | |
var mWrap = wall.children('.masonryWrap'); | |
var brick = mWrap.children(); | |
var brickW = brick.outerWidth(true); | |
var colCount = Math.floor( mWrap.width() / brickW ) ; | |
var colH=new Array(); | |
for ( i=0; i < colCount; i++) { | |
colH[ i ] = 0 ; | |
} | |
mWrap.css({ position: 'relative' }); | |
brick.css({ | |
float: 'none', | |
position: 'absolute', | |
display: 'block' | |
}) | |
.each(function(){ | |
for ( i=colCount-1; i > -1; i-- ) { | |
if ( colH[ i ] == colH.min() ) { | |
var thisCol = i; | |
} | |
} | |
$(this).css({ | |
top: colH[ thisCol ], | |
left: brickW * thisCol | |
}); | |
colH[ thisCol ] += $(this).outerHeight(true); | |
}); | |
mWrap.height( colH.max() ); | |
} | |
return this; | |
}); | |
}; | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment