Lightboxの設計
Lightboxを作るにあたって
・1枚レイヤを被せるかどうか(後ろを触らせない)で話が変わる
被せるならウィンドウの位置は固定でおk。
被せないなら、後ろを触らせる設計なので、ウィンドウをドラッグ等
移動できるようにしないとダメ。
・汎用性を持たせるなら、ウィンドウの中身は生のHTMLで受け取った方がいいかも
JSONで受け取ると、個別にDOM組み立てることに。
HTMLで受け取ってDOMに追加後、イベント設定する方がいい。
(テンプレート作ってもいいけど、それだと遅くなるので)
・よくあるロード中のアニメーションGIFを画面中央に配置する場合
jQueryを使っているなら、
var loading = $( "<div><img src="./loading.gif" /></div>" ).css( {
position: "absolute",
top: 0,
left: 0
} );
$("body").append( loading );
var _win = $(window);
loading.css( {
top: ( _win - loading.height() ) / 2,
left: ( _win - loading.width() ) / 2
} );
これだと、画像の読み込み前に位置が設定され、ローディング要素のwidthが0になることがある。
なので、こうする。
loading.load( function() {
loading.css( {
top: ( _win - loading.height() ) / 2,
left: ( _win - loading.width() ) / 2
} );
} );
これで、要素が読み込まれた後に位置を設定できる。