2009年7月16日木曜日

[CSS] スクロールする領域内で position: relative; を指定すると、スクロールが効かなくなる

overflow: auto; を設定したdiv内で、
position: relative; を設定すると、
overflowした部分がそのまま表示され、
かつ、スクロールが効かなくなる現象があった。

Firefox 3 では問題ないが、IE7, IE8 で起きた現象。
IEのバグらしい。


(例)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
.frame {
width: 100px;
height: 100px;
overflow: auto;
}

.item {
width: 80px;
height: 80px;
position: relative;
background-color: red;
margin-bottom: 5px;
}
</style>
</head>

<body>
<div class="frame">
<div class="item">
</div>
<div class="item">
</div>
<div class="item">
</div>
</div>
</body>
</html>


※説明のために簡略化。
 どうしてもrelativeが使いたかったのです。。。

解決方法としては、
1. DOCTYPEを無くすとうまく表示される。
 つまり、互換モードにすればいいのかな。
 でも、これだと全体の表示が崩れてしまいそう。
 (もうすでにいろいろ書いていたので。)

2. .frame に position: relative; を追加する。
 これでIEでもFFでも思ったとおりの表示になる。

FF, IE以外は確認してません。。。

0 件のコメント:

コメントを投稿