IE6でSelectボックスだけz-indexが効かないバグをjQueryで解消する方法

z-indexでレイヤー表示したボックスの上にselectボックスだけが上側に表示されてしまうIE6のバグがある。
それを解決するjQueryプラグインがある


まず事象の確認。


HTML

<div id="layer">z-index: 9999;に指定したdivボックス</div>

CSS

div#layer {
  color: #FFF;
  background: #555;
  border: 1px solid #CCC;
  position: absolute;
  width: 100px;
  height: 100px;
  z-index: 9999;
}


上記で通常問題なくレイヤー表示されるが、IE6の場合以下のようにselectボックスだけがz-indexを無視してしまう。(バグ)



これを回避するには、
 1.selectボックスを動的に表示/非表示にする
 2.iframeをselectボックスとレイヤー表示したいエレメントの間に挟む(IE6はiframeに対しては正しく動作するため)
とあるらしいのだが1.は動きが明らかに不自然。
残るは2.しかないが、実装も若干面倒。


探してみたところjQueryプラグインbgiframeプラグインは2.の方法を簡単に実装できるらしい。


bgiframe()を呼び出すだけ

$("#layer").bgiframe();


すると下図のように本来指定した通りの重なりとなる。

便利!!


jQuery bgiframe Plugin Documentation
http://brandonaaron.net/code/bgiframe/docs

ソースコードはこちら
http://code.google.com/p/rietveld/source/browse/trunk/static/autocomplete/lib/jquery.bgiframe.min.js


Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)
西畑 一馬
アスキー・メディアワークス
売り上げランキング: 5168
おすすめ度の平均: 5.0
5 WEBデザイナー必見の一冊
5 プログラム初心者にお勧め
5 自分でJavascript操作したい人にお勧め