2017年1月30日

高さの異なるブロック要素をタイル状に隙間なく並べる

高さの異なるブロック要素を左上から右下へタイル状に隙間なく並べる方法を紹介します。

HTML

補足

  • サンプルでは "album" という id 名を付けた div 要素内に、並べ替える元のリストを記述しています。

jQuery

補足

  • function masonry(s, n) という関数で並べ替えます。引数の s には、元のリストを包む div 要素の id 名を指定し、引数の n には並べ替え後のカラム数を指定します。
  • この関数では、引数で指定されたカラム数分の新しいリストを作成し、それを横並びにしたあと、各リストの中へ元リストの項目をコピーしながら振り分けています(元のリストは CSS で非表示にしています)。
  • サンプルではウィンドウ幅を変えると、カラム数が変わるように指定しています。

CSS

補足

  • jQuery の処理で並び変わる前に、一瞬元のリストが縦一列に表示されてしまうので、 CSS で非表示にしています。

サンプル