a:hoverで背景を設定したらIEでバグが発生したのでメモ
久々に、なんだこれ!?っていうバグにぶちあったった。
グローバルナビゲーションに:hoverを設定したところ、
なぜかその下に設定していたイメージも動いた・・・
しかもIEだけ・・・なぜなんだ!?
ってことで自分の解決策のメモ代わりに書いておく。
バグが発生したときのソース
◎ HTML
<!-- ●wrap --> <div id="wrap"> <!-- ●header --> <div id="header"> <h1>ろご</h1> <p>せつめいぶぶん</p> <ul> <li><a href="#">ほーむ</a></li> <li><a href="#">なび</a></li> <li><a href="#">なび</a></li> <li><a href="#">なび</a></li> <li><a href="#">なび</a></li> <li class="last-child"><a href="#">なび</a></li> </ul> </div> <!-- ■/header --> <!-- ●header-img --> <div id="header-img"> <img src="#" width="800" height="182" alt="#" /> </div> <!-- ■/header-img --> ・・・以下略
◎ CSS
/* wrap ------------------------------------*/ #wrap{ width: 800px; margin: 0 auto; text-align: center; } /* header ------------------------------------*/ #header { margin: 20px 0 0 0; } #header:after { content: ""; display: block; height: 0; clear: both; visibility: hidden; } #header h1 { float: left; margin: 30px 0 0 0; } #header ul { clear: both; padding: 20px 0 0 0; } #header ul li { display: inline; float: left; } #header ul li a { text-align: left; float: left; width: 158px; margin: 0; padding: 20px 0 20px 5px; border-top: 2px solid #999; border-bottom: 2px solid #999; border-left: 2px solid #999; background-color: #fce2eb; } #header ul li a:hover{ background-color: #ff0000; } #header ul li.last-child a{ border-right: 2px solid #999; } /* header-img ------------------------------------*/ #header-img { clear: both; margin: 20px 0 30px; }
イメージにて表現
IEで起こるa:hoverのバグ
調べたらでてきたー!!
「アンカーを:hover状態にすると親ブロックの高さが変化する」
ってことで、なんとか修正させた。
修正したのは、ulのpaddingを0にして、
widthをつけたところで問題解決!
今回の事例は比較的簡単だったようだ。
以前にも一度この問題にぶちあたっていたけど、
まさかバグだったとは…
以後覚えておこっと。