ライトボックスの画像ギャラリーを書いていて、正しい画像の配置に苦労しています。
画像をクリックすると、ライトボックスが表示されます。JSで生成された全く新しいオブジェクトです。マージンを設定することで、画面中央に移動します(z-index付き)。
ただし、これらのアクションは、イメージがロードされる前に実行されます。そのため、JS には必要な情報がなくclientWidth
、代わりにclientHeight
使用さ0
れます。これにより、画像の左上隅 (他の隅と同じようにロードする前) が画面の中央に表示されます。画像の読み込みが開始されると、右下に拡張されます。
画面上で画像を正しく配置するにはどうすればよいですか?
PS: lightbox/lightbox2 ライブラリへの接続はありません。
PPS: 関連コード:
JS:
function lightbox(res, dsc) {
// lbimg: Lightbox-Image
var lbimg = document.createElement("img");
lbimg.src = res;
lbimg.id = "lbimg";
document.body.insertBefore(lbimg, document.body.firstChild);
lbimg.style.marginTop = "-" + Math.floor(lbimg.clientHeight/2.) + "px";
lbimg.style.marginLeft = "-" + Math.floor(lbimg.clientWidth/2.) + "px";
}
CSS:
#lbimg {
max-width: 70%;
max-height: 80%;
position: absolute;
left: 50%;
top: 50%;
border: 10px solid #fff;
z-index : 10;
}
HTML (縮小画像のみ表示):
<div class="list">
<div><a onclick="lightbox('image.JPG', ''); "><img class="mini" src="image.JPG_MINI.jpg" /></a></div>
<!--other images are defined analogous-->
</div>