Psalm

プログラマ向け技術メモ

selectboxがメニューの上に表示される

2008-08-29 11:32:24 | CSS
カーソルを当てると表示されるようなメニューを作っていると
しばしば遭遇する現象。ただしIEのみ。
重なりが悪いのかと、z-indexを設定しても駄目。
それもその筈でselectboxを制御しているのはブラウザではなく
OSなのだそうだ。
ゲイツめ・・・!

何故かiframeはselectboxの上に表示できるので<div>の下にダミーの
<iframe>を入れ込めば良い。(shimって言うらしい)
bodyに<iframe scrolling="no" frameborder="0" id="shim"></iframe>
を記述しておいて、Javascriptのdisplay属性を切り替えるところに

setShim(element);

を追加。setShimの中身はこんな。elementで渡してるのは当然div。

function setShim(obj) {
var shim = document.getElementById('shim');

// サイズ、位置を合わせる
shim.style.left = obj.style.left;
shim.style.top = obj.style.top;
shim.style.width = obj.offsetWidth;
shim.style.height = obj.offsetHeight;
shim.style.display = 'block';
}

な感じ。ふむ。