• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryでモーダルウインドウ、ie6の挙動)

jQueryでモーダルウインドウ、ie6の挙動について

このQ&Aのポイント
  • jQueryを使用して制作したLightBox風のモーダルウインドウが、ie6では正しく動作しない問題が発生しています。
  • ie6ではcssのpositionプロパティのfixedに対応していないため、ボタンとウインドウを擬似的に固定配置していますが、一部の動作が正常に動作しないことがあります。
  • モーダルウインドウを閉じて再度開くと、ウインドウの高さが相対値指定の80%にならない問題や、画面が延々と下にスクロールできてしまう問題が発生します。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

#1、#2です。 >ボタンを押してoverLayerを表示させた後にブラウザを縮めて >overLayerを少しでもブラウザの表示エリア外にすると~ ブラウザのリサイズ(サイズ変更)によるイベントがありますので、リサイズ時には、もう一度表示サイズの調整を行なうようにすればよろしいかと思いますが? (c.f. onresize)

whosfoo
質問者

お礼

何度も目を通していただきありがとうございます。 そう言う処理で制作したいと思います。 参考になりました。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >無限スクロール現象が起きてしまうようです。 >これの回避方法がどうにも見つかりません。 IE6で、#1の方法でスクロールが起きないことを確認していますが…?

whosfoo
質問者

お礼

度々ご回答ありがとうございます。 教えて頂いたソースに書き換えたものを上げました↓ http://foofoo77.web.fc2.com/imagechange/light_animate4a.html ちょっと言葉足らずだったようですみません。 ボタンを押してoverLayerを表示させた後にブラウザを縮めて overLayerを少しでもブラウザの表示エリア外にするとスクロールが止まらない現象が発生してしまいます。 この現象を回避する方法はなさそうなのでposition指定をbottomからするしかないかなと思っています。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

回答がないみたいなので。 jqueryもExpressionもよくわかってないので、かなりいい加減ですが… 少しいじってみたところ、どうやらhide()にした時に要素がもとの高さに戻ってしまっているみたい。 次に表示するときにもレンダリングで再計算されないらしく、body全体の高さが高くなってしまうためにスクロールしっぱなしということのようですね。 最初からwindowを小さくしておいて表示させると、1回目は(多分)意図通りに表示されると思いますので、やっぱりhide()なのかなぁ? とはいっても、1回目がOKということは、イニシャライズ時のhide()では悪影響が出ていないことになるので、イベント処理中のhide()のみ?(そんなこともなさそうですが…) IEのバグなのかjqueryなのか、はたまたExpression(←多分これは関係なさそう)の影響なのかよくわかりませんが、とりあえず高さをスクリプトで再設定するようにしてあげれば、ご質問の現象は起こらなくなるみたいです。 (せっかくCSSで設定している意味がなくなっちゃいますけど)  $("#switch").toggle(function(){   $("#glayLayer").show();   $("#overLayer").show(); の部分を  $("#switch").toggle(function(){   $("#glayLayer").css("height", $(window).height()+"px").show();   $("#overLayer").css("height", ($(window).height()*4/5|0)+"px").show(); とすれば高さが反映されるようです。(←当たり前だけれど。 でも、%指定でしなおしてもダメみたい) イベント処理のhide()の後で同様に指定しておく方法でもいけるみたいなので、なんとなくhide()とIEの相性が悪いのではという気がしますが、よくわかりません。 あんまり納得がいってませんけれど、まぁ、対処療法のひとつとして…

whosfoo
質問者

お礼

ご回答ありがとうございます。 返信遅くなりすみません。 教えて頂いた方法でウインドウの高さの算出はできました。 ie6でposition: abusolite指定で scrollイベントで動的に座標を取得している要素はブラウザの下に出てしまうと無限スクロール現象が起きてしまうようです。 これの回避方法がどうにも見つかりません。 setExpressionはie独自の機能でブラウザが描画をするタイミングでイベントが起こるメソッドのようです。

関連するQ&A