2011-02-15 7 views
11

¿es posible aleatorizar los ladrillos en la plugin JQuery Masonry para que cada vez que la página cargue se vea una disposición diferente? No hay opción para el azar por lo que puedo decir.Aleatorizar ladrillos en mampostería

Gracias!

Respuesta

9

Encontré una respuesta en los foros de jQuery y la ajusté un poco para mis necesidades. En pocas palabras - se tire los bits de HTML dentro de su mampostería() soporte y que aleatoriamente la colección, a continuación, volver a colocarla:

$(document).ready(function(){ 
    var ar = $('#masonry').children(); 
    ar.sort(function(a,b){ 
     // Get a random number between 0 and 10 
     var temp = parseInt(Math.random()*10); 
     // Get 1 or 0, whether temp is odd or even 
     var isOddOrEven = temp%2; 
     // Get +1 or -1, whether temp greater or smaller than 5 
     var isPosOrNeg = temp>5 ? 1 : -1; 
     // Return -1, 0, or +1 
     return(isOddOrEven*isPosOrNeg); 
    }); 
    $('#masonry').html(ar); 
    $('#masonry').masonry({ 
     columnWidth:220, 
     animate: true 
    }); 
    }); 
+0

Parece que no puedo hacer que esto funcione, ¿esto reemplaza la secuencia de comandos de albañilería en html? es #masonry the contenedor y .children la clase en el div? – mark

+0

No creo que esto pueda funcionar debido a la naturaleza de la mampostería. – Bytemain

+1

El fragmento de arriba funciona muy bien. Debe cambiar todas las instancias de #masonry para que coincida con su contenedor de mampostería. Además, puede usar $ ('# masonry'). Masonry ('reload'); después de la reproducción aleatoria si la cuadrícula ya está en vivo. – askon

1
(function($) { 

$.fn.randomize = function(childElem) { 
    return this.each(function() { 
     var $this = $(this); 
     var elems = $this.children(childElem); 

     elems.sort(function() { return (Math.round(Math.random())-0.5); }); 

     $this.remove(childElem); 

     for(var i=0; i < elems.length; i++) 
     $this.append(elems[i]);  

    });  
} 
})(jQuery); 


$(window).load(function(){ 
    $(masonry-container).randomize(masonry-brick).masonry('reload'); 
}); 
2

creo un plugin más apropiado para su sería Isotope, que está construido de la misma manera que la albañilería (¡y del mismo tipo!) pero tiene funciones de clasificación y filtrado integradas

+0

Sí, tiene un simple $ container.isotope ('shuffle'); opción :) – Systembolaget

+3

Problema con el isótopo es que no se puede usar en productos comerciales sin una licencia. – user1429980

Cuestiones relacionadas