demo.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. $(function(){
  2. var TILE_IDS = [
  3. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
  4. 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
  5. ];
  6. var rows;
  7. var rows_lg = [
  8. " A A B . . . ",
  9. " A A B . . C ",
  10. " . . . . D C ",
  11. " E E F F D . ",
  12. " . . F F . . ",
  13. " . G G . . . "
  14. ];
  15. var rows_sm = [
  16. " A A B . . ",
  17. " A A B . . ",
  18. " . C . . . ",
  19. " . C D E E ",
  20. " F F D . . ",
  21. " F F . . . ",
  22. " . G G . . ",
  23. " . . . . . "
  24. ];
  25. var rows_xs = [
  26. " A A B ",
  27. " A A B ",
  28. " . . . ",
  29. " . . C ",
  30. " . . C ",
  31. " . . D ",
  32. " E E D ",
  33. " F F . ",
  34. " F F . ",
  35. " . . . ",
  36. " . G G ",
  37. " . . . "
  38. ];
  39. var el = $('#masonry'),
  40. grid = new Tiles.Grid(el);
  41. grid.cellPadding = 0;
  42. grid.animationDuration = 0;
  43. grid.resizeColumns = function() {
  44. return this.template.numCols;
  45. };
  46. grid.numCols = function() {
  47. return this.template.numRows;
  48. };
  49. grid.createTile = function(tileId) {
  50. var tile = new Tiles.Tile(tileId);
  51. tile.$el.attr('tile-id', tileId).addClass('pos-abt').append($( " > .item:first", el ));
  52. return tile;
  53. };
  54. // get the rows json for different screen
  55. var $window = $(window);
  56. var getRows = function(){
  57. var $rows;
  58. $window.width() < 768 && ($rows = rows_xs);
  59. $window.width() >= 768 && ($rows = rows_sm);
  60. $window.width() >= 992 && ($rows = rows_lg);
  61. return $rows;
  62. };
  63. grid.template = Tiles.Template.fromJSON(getRows());
  64. grid.isDirty = true;
  65. grid.resize();
  66. var ids = TILE_IDS.slice(0, grid.template.rects.length);
  67. grid.updateTiles(ids);
  68. grid.redraw(true);
  69. // set height on mobile
  70. var setHeight = function(){
  71. el.height('auto');
  72. $window.width() < 768 && el.height(grid.cellSize * grid.template.numRows);
  73. }
  74. setHeight();
  75. // resize the window
  76. var $resize, $width = $window.width();
  77. $window.resize(function() {
  78. if($width !== $window.width()){
  79. clearTimeout($resize);
  80. $resize = setTimeout(function(){
  81. grid.template = Tiles.Template.fromJSON(getRows());
  82. grid.resize();
  83. grid.redraw(true);
  84. setHeight();
  85. $width = $window.width();
  86. }, 200);
  87. }
  88. });
  89. });