私は IE 8/7 で奇妙な問題に遭遇し、問題を示す最小限のテストケースに到達するために地獄を (そして戻って) 行きました...
次の HTML について考えてみましょう。
<form id="hover-test">
<fieldset>
<div id="hover">
<p>always visible</p>
<p class="hidden">Visble only on hover</p>
</div>
</fieldset>
<fieldset>
<a href="#" id="link">Please jump</a>
</fieldset>
</form>
そして、このCSSのビット:
form { background-color:#f5f5f5; }
.hidden { display:none; }
#hover:hover .hidden { display:block; }
#link { position:relative; }
すべきこと:カーソルを合わせると追加の段落が表示され、次のフィールドセットとそのすべてのコンテンツが押し下げられます。(FF/Chrome/Safari/Opera では正常に動作します)
IE 7/8 での動作: 段落が表示され、次のフィールドセットが押し下げられます。ただし、リンクは、私には理解できない理由で固定されたままです。
問題を再現する最小限のマークアップを求める苛立たしい追跡の中で (元のコードから 1 行の CSS を削除すると効果は消えましたが、テストケースにはそれらが含まれていても問題ありません... O_o)、少なくとも 3 つを特定しました。ここで一緒に働くプレイヤー:
- フィールドセット:すべてをdivまたはフィールドセットなしのフォームに配置すると、すべてうまくいきます
- position:relative: その行のコメントを外すと出来上がり - リンクがジャンプします。
- 背景色:これは私にはまったく意味がありませんが、これがなくても機能します。
それで、ここに質問があります(暗黙の「WTF?」は別として):
この動作の原因について何か手がかりはありますか? そして、それを解決する方法は?または少なくとも、多くの既知の IE の問題のうち、さらにテストするために調べることができるヒントはありますか?
多分私は構造を曲げる方法を考え出すことができます...たとえば...追加のラッパーdivまたは何かに背景色を持たせることができますが、これは...ややばかげているようです.とにかく、そうではないように感じます.これを今理解すると、将来的に非常に複雑になる可能性があります。