javascript - Script to tile images not initialized until you resize the browser -


i have page supposed tile images this

enter image description here

but when first land on page see images stack behind each other

enter image description here

if resize browser @ shift position. @ on jquery makes happen

jquery

var colcount = 0; var colwidth = 300; var margin = 10; var spaceleft = 0; var windowwidth = 0; var blocks = [];  $(function(){   $(window).resize(setupblocks); });  function setupblocks() {   windowwidth = $(window).width();   blocks = [];    // calculate margin blocks evenly spaced within window   colcount = math.floor(windowwidth/(colwidth+margin*2));   spaceleft = (windowwidth - ((colwidth*colcount)+(margin*(colcount-1)))) / 2;   console.log(spaceleft);    for(var i=0;i<colcount;i++){     blocks.push(margin);   }   positionblocks(); }  function positionblocks() {   $('.block').each(function(i){     var min = array.min(blocks);     var index = $.inarray(min, blocks);     var leftpos = margin+(index*(colwidth+margin));     $(this).css({       'left':(leftpos+spaceleft)+'px',       'top':min+'px'     });     blocks[index] = min+$(this).outerheight()+margin;   });  }  // function min value in array array.min = function(array) {     return math.min.apply(math, array); }; 

i think there must not wrapping.

in html have on <body>

html

<body onload="setupblocks();"> 

my guess line causing problem this

$(function(){   $(window).resize(setupblocks); }); 

i google don't know called in there see other options. can me figure out gap in information.

edit: tutorial got works fine because had of items hand coded. in projects being loaded mustache template.

so though script load onload guess, how fire off both on load, , again when resized?

call setupblocks function after page loaded:

$(function(){     setupblocks();     $(window).resize(setupblocks); }); 

edit:

looking @ html page, looks creating elements dynamically after page loaded. try update code in html page:

$(function() {     $.getjson('img.js', function(data) {         var template = $('#imgtpl').html();         var html = mustache.to_html(template, data);         $('#image-list').html(html);         setupblocks();     }); }); 

Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -