フツイッター フェイスブック RSS

WEB作成からカメラ・ガジェット・PC系など雑多なブログ

jQuery

Lightbox2のモーダルウィンドウを任意のサイズにカスタムする

2016年04月02日

Pocket

Lightboxをカスタマイズ

画像のモーダル表示で便利なLightboxですが、デフォルトではウィンドウサイズの幅または高さに合わせて画像サイズが決定します。
これはこれで便利なのですが、例えばサイトのキャプチャなど縦長の画像の場合に長辺が圧縮されて非常に見ずらくなってしまいます。

なので今回、Lightbox2で表示される画像を任意の横幅で可変できるようにカスタマイズしてみました。
ちなみに今回使用したバージョンは2.8.2になります。

Lightbox2使用方法

一応簡単にですが使用方法から。

ダウンロード

Lightbox2 download

フォルダをコピー

解凍したデータからsrcフォルダ内の下記フォルダを自身のサイトにコピーする。

css
images
js

読み込み

jQueryに加えてLightboxのcssとjsを読み込む

タグ記述

モーダル表示したい画像を「rel="lightbox"」を付けたaダグで囲う。

以上でLightboxの設置は完了です。

モーダルウィンドウを任意のサイズで表示する

デフォルトのソース

まずデフォルトでモーダルウィンドウサイズを指定している構文から見てみます。
バージョン2.8.2では268行~281行になります。

Lightbox2のソース

ここで出てくる変数と使用される値は下記の通りです。

変数

windowWidth:ウィンドウの横幅
windowHeight:ウィンドウの縦幅
maxImageWidth:表示可能な最大横幅
maxImageHeight:表示可能な最大縦幅
preloader.width:画像の横幅
preloader.height:画像の縦幅

imageWidth:表示する横幅
imageHeight:表示する縦幅

デフォルトソースのフロー

1.表示可能なサイズより画像サイズが大きい場合に処理
2.縦幅より横幅のほうがスペースが大きい場合、縦幅に合わせて縮小
3.そうでない場合は横幅に合わせて縮小

尚、縮小時に対する幅、例えば縦幅を軸に縮小する場合の横幅は、縦幅の縮小比率を算出して同比率のサイズを代入しています。
あとは$image.width()と$image.height()で定義しています。

ソースの置き換え

上記のフローを踏まえてソースを改変します。

機能させたい条件

1.ウィンドウ幅が1000pxより大きい場合、画像の横幅を800に固定。縦幅は同比率で縮小
2.そうでない場合は横幅をウィンドウサイズの90%に固定。縦幅は同比率で縮小

置き換えるソース

以上です。
記述がどこにあるかと変数の役割が分かればあとはシンプルに書けました。
もちろんウィンドウサイズの条件を追加することも可能です。

まとめ

正直どこに何が書かれているのか分からないままソースを眺めている間は気が滅入りましたが、ビギナーでも場所が分かれば何とかなるものです。

ちなみにlightbox.js内のLightbox.defaultsに下記のような記述がありましたが、デフォルトではfitImagesInViewportしか機能しませんでした。

lightbox.js 41行目 Lightbox.defaults内

使い方が悪かったのか実装予定のものなのか分かりませんが、とりあえずメモとして残しておきます。

このカテゴリで良く読まれている記事
関連記事

COMMENT