せっかくの週末なのに

2008/11/8 [15:59:02] (土) 天気

曇天雨混じりの寒空、だ。おまけに、週末まで、ブラウザ間の解釈に違いにムカつく。


Ajaxで取ったデータをコンテナに流し込んで、そいつをポップアップ風に表示する、てのはありがちなこと。で、「ポップアップ風」てのはページ上の最前面に表示するのが当然なので、z-indexというのを使う。

こいつの解釈が、FireFoxやSafariと、IEで違ってるので悶絶。ありえねえ。


firefox safari

z-indexが最優先。z-indexの大きいものが必ずページ上最前面に表示される。

z-indexの指定がなければ、HTMLの順番(後ろのものが上に)


ie

HTMLの順番がz-indexよりも優先される、っぽい。z-indexの指定に関わらず、HTMLの後ろに別のコンテナが書かれていたら、それが上となってz-indexで表に出したいコンテナは下に潜りこんでしまう。


ieでz-indexの指定を、別のコンテナに適用するには、z-indexを指定したコンテナの親コンテナにもz-indexを指定して前面に出すか、後ろのコンテナにz-indexを指定して背面にまわすか。

if(document.all){

$(c).parentNode.style.zIndex=999;

}

って、なんでieだけのために、と思いつつ入れてみた。とりあえず、直後のコンテナに対しては意図どおり…だけど、さらにコンテナをまたがってポップアップすると、さらに後ろのコンテナにz-indexの指定が勝てなくて、下に潜り込んでしまった。


もうなんかね。ieにイラついたので、ieの時だけ。

HTMLのフッター部分に(最後に)ポップアップ用の空コンテナを用意、

body左上(0,0)から表示位置にある該当div要素の座標を取得して、

絶対位置指定で表示


function get_offset(ele) {

var ele = (typeof ele == ’string’) ?

document.getElementById(ele) : ele;

var valuetop = 0, valueleft = 0;

do {

valuetop += ele.offsetTop || 0;

valueleft += ele.offsetLeft || 0;

ele = ele.offsetParent;

} while (ele);

return {left:valueleft, top:valuetop};

}

body左上から、divなどblock要素の座標を取得するスクリプトを、検索しまくり。ありがたくいただいた。


ううううむ。しかし、こんなしょーもないことに半日も取られてしまって…ふぁっきんIEが。


新米IT担当者のための HTML/CSS&Webサービスがしっかりわかる本

『新米IT担当者のための HTML/CSS&Webサービスがしっかりわかる本』

シープランニング

<<2026/2>>
       
1234567
891011121314
15161718192021
22232425262728
検索:

【最近の20件】