移動可能なレイヤーとか
ポップアップメニューのように動的にレイヤー(div)を作ったとき、下にドロップダウン(select)があるとそのドロップダウンが透けてしまう。
理由はどこかで読んだが忘れた。なにしろ他のフォーム要素とは系統が違うらしく、一筋縄ではいかない。
そこで、表示するdivの背後に空のiframeを忍ばせておくとドロップダウンを隠してくれる。ただし、zIndex=-1にしないと表示したい要素が隠れてしまう。opacityで透かしても良いが、divがイベントを拾えなくなる。
つまり
<div style="position:absolute;width:100px;height:100px" > <iframe style="z-index:-1;position:absolute;top:-1;left:-1;width:100px;height:100px" /> <div style="position:absolute;top:0;left:0;width:98px;height:98px" > ここにコンテンツを書く </div> </div>
iframeの位置を-1にしているのはメインのdivと完全に重ね合わせるため。コンテンツのwidth,heightはborder(1pxの場合)を差し引く。
さて、ここではまった。
移動するレイヤーを作っていて、移動位置を確認するのにmousemoveの最中に別のdivにトレースもどきを出力していたら、ドロップダウンの位置から動かない。これで3日費やした。どうにもわからなかった。
まさかトレースが邪魔をしていたとは!
そのうち公開。