可変グリッドレイアウトのjQueryプラグイン書いたよ

可変グリッドレイアウトjQueryプラグイン(jquery.vgrid.js)

なんだか可変グリッドレイアウトがまた流行ってる(?)ようなので、jQueryプラグイン書いてみた。
一通りブラウザで表示確認ぐらいはしたけど、テストは十分じゃありません。

Demo

利用方法はデモのソースを確認してください。(ウィンドウリサイズして動きも確認してね)

Download

利用には、jQuery本体とjquery.easingプラグインが必要です。別途読み込んでください。

更新情報

v0.1.6 (20100713)

コメント等でいただいた、画像ブロックのレイアウトが崩れる現象の回避機能を実装しました。
下記の回避方法のどちらかをお試しくださいませ。

  1. "img"タグに"width","height"属性を正しく指定する。(推奨)
  2. vgridのオプション"useLoadImageEvent"を"true"に設定する。(DEMO)

画像ブロックレイアウトの崩れは、画像サイズの確定が画像読み込み後(レイアウト計算後)になるのが原因なので、あらかじめ静的に画像サイズを指定しておくか、オプションによって画像読み込み完了時に再描画を発生させるか、という対応になります。

demo007を追加
v0.1.5 (20100306)
コメントでいただいたバグをfixしました。
若干最適化しました。
v0.1.4 (20100225)
再配置のstart/finishイベントを設定できるようにしました。
demo006を参考にしてください。
v0.1.3 (20100217)
vgrefreshがvgsort内容もリフレッシュしちゃうのを修正
一応、フォントサイズ変更のリフレッシュトリガーを足してみた
v0.1.2 (20090909)
vgrefresh/vgsort関数のサンプル追加
サンプルインデックスを追加
v0.1.1 (20090907)
fadeInオプションを追加
コンテナボックスのリサイズ処理を変更
demo004を追加

Todo

  • グリッドの横幅がバラバラだと綺麗に並ばない
  • 並びにスペースの無駄ができる場合がある
  • クロスブラウザ/マルチプラットフォームで要確認
  • vgrefreshはvgsort内容もリフレッシュしちゃう
  • IEが重い

修正したらTwitterで流すようにします。興味のある方はフォローしてね。

まとめ

昨日PHPカンファレンスのUSTREAM見ながら書いてた。なぜPHPカンファレンスでJSなんだという話は置いといて、ああいうのを見てると自分も何かしなきゃと思っちゃう不思議。

--
最近、無音だと逆に作業に集中できないパターンに入ってる。

  • 相馬 2009/10/23 12:30

    はじめまして相馬といいます。
    これむちゃくちゃいいですね。
    美しくすらあります。
    これからも購読させていただきます。

  • yu 2010/03/04 23:00

    便利なプラグインをありがとうございます。素晴らしいです。

    このプラグインを利用させていただいて1つ気づいたことがあったのですが、Operaだけエラーになる場合がありました。function matrixSortX()にundefinedな値が渡った場合でした。
    if (a == null || b == null) return 0;
    などとやって適当に逃げてみています。

  • xlune 2010/03/06 19:09

    >相馬さん
    ありがとうございます。

    >yuさん
    バグ報告ありがとうございます。
    とりあえず自分も逃げてみましたw

    自分の環境では不具合を再現できなかったので、まだ直ってない場合はお知らせいただくと幸いです。

  • t.okubo 2010/04/07 04:02

    すごく便利で助かりました。
    WordPressのテーマに組み込んで使わせていただきます。

  • Davide Morotti 2010/07/12 21:07

    Hi,
    I'm trying to place images of different heights inside the grid. The problem is that the first time the page is loaded, the thumbnail doesn't expand to wrap the images. The vgrid plugin is positioning them absolutely and they overlap eachother. If you refresh the browser or change the size of the browser window they re-arrange themselves properly. In Safari however they never display correctly.
    Thanks

  • xlune 2010/07/13 15:35

    >t.okubo さん
    ありがとうございます

    >Davide Morotti さん
    コメントありがとうございます、プラグインを更新しました。
    imgタグに"height"属性を指定するか、"useLoadImageEvent"オプションを利用してみてください。

    [DEMO] http://blog.xlune.com/2009/09/vgrid/demo007.html

Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)