gridalicious algorithm as3

Out of context: Reply #3

  • Started
  • Last post
  • 7 Responses
  • acescence0

    function arrange() {

    // how many columns fits here?
    var columns = Math.max(MIN_COLS, parseInt($('body').innerWidth() / (COL_WIDTH+GAP)));
    $('.eachpost').css('width',COL_W... + 'px');
    $('.twocols').css('width', COL_WIDTH*2 + GAP );
    $('.threecols').css('width', COL_WIDTH*3 + GAP*2);

    for (x=0; x < columns; x++) {
    maxy[x] = 0;
    }

    // lets iterate over all posts
    $('.eachpost').each(function(i) {

    var pos, cursor, w , altura= 0;

    w = (Math.floor($(this).outerWidth() / COL_WIDTH));
    cursor = 0;

    if (w>1) {
    for (x=0; x < columns-(w-1); x++) {
    cursor = maxy[x] < maxy[cursor] ? x : cursor;
    }
    pos = cursor;

    for (var x=0; x<w; x++) {
    altura = Math.max(altura, maxy[pos+x]);
    }
    for (var x=0; x<w; x++)
    maxy[pos+x] = parseInt($(this).outerHeight()) + GAP + altura;

    $(this).css('left', pos*(COL_WIDTH+GAP) + offx).css('top',altura + offy);
    }
    else {

    for (x=0; x < columns; x++) {
    cursor = maxy[x] < maxy[cursor] ? x : cursor;
    }

    $(this).css('left', cursor*(COL_WIDTH+GAP) + offx).css('top',maxy[cursor] + offy);
    maxy[cursor] += $(this).outerHeight() + GAP;
    }
    });

    }

View thread