FancyboxをIE6などでもposition:fixedで使えるようにする【jQuery】

公開日:  最終更新日:2014/05/02

FancyboxというjQueryのプラグインで簡単にかっこよく別窓を表示できるプラグインがある。
ムービーや画像、さらにはインラインフレームにして別のページを表示と、
ページの中でまるで別窓を開くように見せることができる素晴らしいプラグインだ。
しかし、このプラグイン、スクロールしたときの挙動が完成していない。
オプションで窓を真ん中に持ってくるというオプションが一応ついてるっちゃついてる。
centerOnScrollというオプションをtrueにすれば、jQueryのanimation効果を使って無理やり真ん中には持ってこれる。
だがしかし、スクロールするたびにウニョンウニョンと真ん中に動いてくるのである。
漢だったら黙って真ん中で固定されてろ!ってことで、
CSSで、fancyboxpostion: fixedを設定してみたのでその備忘録。
↓Click to continue…..

sponcer link


CSSではposition: fixedと指定するとどこにスクロールさせても同じところに固定されているという
見せ方をすることができる。
しかしfancyboxではひとつ改造をしてあげないとそれがうまくいかないのである。
ということで下記を参考にちょっと手を加えた。
How to get Fancybox 1.3.1 to stay put!
ちなみに今回改造したfancyboxのバージョンは
Version: 1.3.4 (11/11/2010)
のものである。
つまり、jquery.fancybox-1.3.4.jsってことです。

1.jquery.fancybox-1.3.4のカスタマイズ

参考サイトをもとに673~680行目あたりを修正
Before:


After:

2.exFixedの適用

position: fixedというのはIE6では使えない機能である。
これをCSSとjQueryで無理やり表現してもかくかくとして不自然な表現になってしまう。
そこで、そこの部分をカバーしてくれるexFixedというプラグインを今回使う。
ダウンロードは以下より。
IE6 position:fixed の諸問題を解決する jQuery.exFixed.js
Fancyboxではどこでこいつを使うかというと、
459-462行目あたりでexFixedを使います。
Before:


1行追加します。

After:

3.CSSの変更

さらにCSSも変更せねばなりません。
Before:


After:

更に更に!!!
IE6の対応のために以下を適当なところに付け加えます。

これで任務完了!
これで、おそらく、クリックされれば固定窓で表示されるはず。
もちろん、IE6でもposition:fixedで表示されてるはず・・・!
(ただ、2回目以降の表示はうまくいかないというバグはあったりしますが。。)
一応カスタマイズしたjavascriptファイルをおいておきます。

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑