今更ですが、Pinterest風レイアウトの実装メモ。
基本的な実装
$(function() { |
ちょっと修正する
Masonryプラグインを読み込んで、上のコードで手軽に Pinterest 風レイアウトは実装できるが、もうちょいかっこよく表示したいので以下のように実装する。
HTML
描画が終わるまでローディングを表示したいので、ローディング用のdivを置き、#container
にグリッド幅計算用の.grid-sizer
を用意する。ポイントは、#container
に直接.item
を置くのではなく、display:none;
な#hidden-items
に退避するところ。
<section role="main"> |
JavaScript
JavaScriptはだいたい同じだけれど、#hidden-items
から.item
を取得して、#container
にappendするように実装を修正する。DOMにappendしてからMasonryでappendedして.item
を認識させないといけないのが二度手間ですが、この方法でしか実装できなかったので仕方ないっす。Masonryの後継版?のIsotopeはこのあたりが改善されている。
(function() { |
これでちょっとしたエフェクトが付くし、表示する.item
は非表示になっているので無駄なチラつきとかがなくなる。
描画が終わったら.loading
を非表示にすればOK。
モバイル用に最適化する
iPhoneなどのモバイル端末で見た時に、以下のようにグリッドの余白が空きすぎていてカッコ悪いので、グリッドサイズを調整する。
@media (max-width: 767px) { |
これでどんな画面サイズで表示しても、画面いっぱいにコンテンツが表示されるようになる。